Formulář se neodešle ke zpracování do příslušné funkce
- ondrapech
- Člen | 49
Ahoj, aktuálně řeším problém, kdy se mi dynamický formulář při kliknutí na tlačítko odeslat nezpracuje příslušnou zadefinovanou funkcí. Už mě vážně nenapadá proč :( Je to můj první dynamický formulář, tak možná dělám něco špatně.
public function createComponentPartnerServiceProduct()
{
return new Multiplier(function ($productId) {
$product = $this->productModel->getProduct($productId)->fetch();
$inputs = $product->related('is_czech_products_partner_service.product_id')->fetchAll();
$form = new BootstrapForm();
//$form->ajax = true;
$form->renderMode = RenderMode::Inline;
//$form->setRenderer(new \AlesWita\FormRenderer\BootstrapV4Renderer);
$form->addHidden('id')->setDefaultValue($productId);
//TODO Vstupy formuláře dávat do containeru
foreach ($inputs as $input) {
switch ($input->type) {
case 'input':
$in = $form->addText($input->system_name, $input->name);
if ($input->required) {
$in->setRequired("Hodnota {$input->name} je povinná!");
}
break;
case 'select':
$in = $form->addSelect($input->system_name, $input->name, explode(',', $input->options));
if ($input->required) {
$in->setRequired("Hodnota {$input->name} je povinná!");
}
break;
case 'checkbox':
$in = $form->addCheckbox($input->system_name, $input->name);
if ($input->required) {
$in->setRequired("Hodnota {$input->name} je povinná!");
}
break;
case 'textarea':
$in = $form->addTextArea($input->system_name, $input->name);
if ($input->required) {
$in->setRequired("Hodnota {$input->name} je povinná!");
}
break;
}
}
$form->addSubmit('addPartnerService', 'Přidat produkt')
->setBtnClass('btn btn-success btn-block');
$form->onSuccess[] = [$this, 'PartnerServiceProductSucceeded'];
return $form;
});
}
public function partnerServiceProductSucceeded($form, \stdClass $values)
{
dump($values);
}
Pouze se obnoví stránka a vyplněné hodnoty jsou v URL v GETu.. Do
funkce partnerServiceProductSucceeded
se aplikace ani nedostane.
Předem moc díky za rady :)
- ondrapech
- Člen | 49
David Matějka napsal(a):
od čeho dědí BootstrapForm?
BootstrapForm dědí od Nette\Application\UI\Form
- ondrapech
- Člen | 49
MajklNajt napsal(a):
zameral by som sa na to, prečo odoslané dáta vidíš v URL – nemeníš niekde (napr. pri ručnom vykreslovaní) metódu odosielania formuláru na GET?
Tenhle formulář se vykresluje automaticky
<div n:if="$product->type == 'partner_service'" class="modal modals-default fade" id="partnerService{$product->id}">
<div class="modal-dialog">
<form class="modal-content">
<div class="modal-body">
<p class="text-center text-big mb-0 pb-0">{$product->name}</p>
<p class="text-center text-muted mb-2">{$product->label}</p>
<div class="w-100 m-auto pt-2 pb-2">
{control partnerServiceProduct-$product->id}
</div>
<button type="button" class="btn btn-default btn-block"
data-dismiss="modal">Zavřít
</button>
</div>
</form>
</div>
</div>
- David Matějka
- Moderator | 6445
Problem je v celém tom obalovacim formu. Smaž jej. Mimochodem, potřebuješ opravdu multiplier? Máš tam nad tím nějaký foreach?
- ondrapech
- Člen | 49
David Matějka napsal(a):
Problem je v celém tom obalovacim formu. Smaž jej. Mimochodem, potřebuješ opravdu multiplier? Máš tam nad tím nějaký foreach?
Nevím, jde to udělat lépe?
Já vypisuju produkty foreachem a v případě, že je to type ==
‚partner_service‘ tak při přidání na účet chci vyplnit ještě
nějaké údaje. Které má každý partnerská služba jiné a načítají se
z DB, tzn. potřebuju vytvořit komponentu formuláře pro ten konkrétní
produkt. Ostatní produkty se prostě přidají na účet, tam ten formulář
nepotřebuju. Ale nevím dopředu kolik tech formulářů bude. Myslím, že to
jinak neudělám :)