Spracovanie formuláru v ErrorPresenter
- minimal
- Člen | 12
Zdravím,
snažím sa rozbehnúť spracovanie formuláru v error presenteri. Formulár generujem manuálne.
<?php declare(strict_types=1);
namespace App\Modules\FrontendModule\Presenters;
use ...;
final class ErrorPresenter extends Nette\Application\UI\Presenter
{
/** @inject */
...
public function renderDefault(): void
{
...
}
protected function createComponentSearchForm(): Form
{
return $this->searchFormFactory->create(function ($values) {
$this->redirect('Search:default', ['term' => $values->term]);
});
}
protected function createComponentMenu(): MenuControl
{
return $this->menuControlFactory->create();
}
protected function createComponentQuickContactForm(): Form
{
return $this->quickContactFormFactory->create(function ($values) {
$this->flashMessage($this->translator->translate('Vašu žiadosť sme úspešne spracovali hneď ako to bude možno sa Vám ozveme na Váš email %s', $values->email), 'info');
$this->redirect('this');
});
}
}
Po vygenerovaní formu sa mi do action automaticky doplní action /error/ takže po odoslaní sa dostanem na www.example.sk/error.
<form action="/error/" method="post" id="frm-searchForm">
<div class="input-group">
<input type="text" class="form-control" placeholder="Skúste vyhľadávanie..." value="" minlength="3" required="" name="term" id="frm-searchForm-term">
<div class="input-group-append">
<button class="btn btn-custom" type="submit" name="_submit">Hľadať</button>
</div>
</div>
<input type="hidden" name="_do" value="searchForm-submit"><!--[if IE]><input type=IEbug disabled style="display:none"><![endif]-->
</form>
Nie je mi jasné ako toto správanie upraviť.
Ďakujem
- Michal Kumžák
- Člen | 106
Když ten formulář generuješ manuálně, proč to neudělat takto:
{form searchForm}
<div class="input-group">
<input type="text" class="form-control" placeholder="Skúste vyhľadávanie..." value="" minlength="3" required="" name="term" id="frm-searchForm-term">
<div class="input-group-append">
<button class="btn btn-custom" type="submit" name="_submit">Hľadať</button>
</div>
</div>
<input type="hidden" name="_do" value="searchForm-submit">
<!--[if IE]><input type=IEbug disabled style="display:none"><![endif]-->
{/form}
Edit: Myslím, že to _do pak nemusíš psát, že se tam doplní samo.
Editoval Michal Kumžák (24. 8. 2021 19:10)