Více formulářů na jedné stránce
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- RePRO
- Člen | 32
Zdravíčko,
chtěl bych se Vás optat, jak nejlépe a čistě vyřešit více formulářů na jedné stránce + zpracování. Chci si vytvořit několik components (AccountEmailControl.php, AccountPasswordControl.php) – všechno to bude vracet formuláře – právě na jedné stránce. Vytvořil jsem v presenteru komponentu a dále do té komponenty vytvářel formuláře (UI\Control). Tady je přibližná struktura projektu:
SettingsPresenter.php
<?php
class SettingsPresenter extends SecuredPresenter
{
/**
* @return Components\User\Account\AccountEmailControls
*/
protected function createComponentAccount()
{
$component = $this->accountFactory->create();
$component->onSuccess[] = function ()
{
$this->flashMessage('Account was updated');
$this->redirect('...');
};
return $component;
}
}
?>
account.latte:
{block content}
<h2>{_ui.settingsAccount.title}</h2>
{control account}
{/block}
AccountEmailControl.php (samostatná komponenta jednoho formuláře):
<?php
interface IAccountFactory
{
/**
* @return AccountEmailControl
*/
public function create();
}
class AccountEmailControl extends UI\Control
{
protected function createComponentFormEmail()
{
...
}
}
?>
accountEmail.latte
{form formEmail}
<article>
<fieldset>
<div class="stacked">
{label currentEmail /}
{input currentEmail, class=>range}
</div>
</fieldset>
</article>
{/form}
Editoval RePRO (6. 10. 2015 11:16)