Best-practice: Manuální vykreslení formulářového kontaineru předaného v komponentě
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Oli
- Člen | 1215
Ahoj,
trochu jsem to zjednodušil, ale jde mě hlavně o princip jak vykreslit
nějakou skupinu inputů, které by měli vlastní šablonu a mohl jsem je ve
fermuláři kde se mají vykreslit vložit nějakým jedním řádkem kodu. Mám
to zhruba takhle:
Podle Filipa
(pod čarou) (nevím jestli se to pořád dělá takhle, nic jinýho jsem
k tomu nenašel) mám nějakej SeoContainer
, kterj si vložím do
komponenty SeoComponent
public function getSeoInputs($form)
{
$this->form = $form;
return new SeoContainer();
}
public function render()
{
$this->template->_form = $this->form;
$this->template->setFile(dirname(__FILE__) . '/template.latte');
$this->template->render();
}
a předám formuláři
function __construct()
{
$this->seoComponent = new SeoComponent();
}
public function createComponentForm()
{
$form = new Form();
// Předám zpátky instanci form, kterou potom využívám pro generování formuláře v komponentě
$form->addComponent($this->seoComponent->getSeoInputs($form), 'seo');
}
public function createComponentSeoComponent()
{
return $this->seoComponent;
}
V šabloně to potom vykresluju:
{* Tenhle control právě vykresluje inputy toho kontaineru. *}
{control seoComponent}
...
{control seoComponent:JS}
A otázka na závěr. Je tenhle postup správně? Funkční to je, ale zajímalo by mě, jestli se to nedělá nějak jinak…