Vykreslení komponenty do PHP, ne šablony
- tpmar
- Člen | 30
Zdravím,
mám projekt, který není tvořený v modelech, presentrech ani šablonách a
potřebuji zjistit, jak si v něm vytvořit komponentu a vykreslit ji do
obyčejného php, pokud to vůbec jde.
Předchozí programátor to řešil tím, že čerpal z minifikované verze
Nette 0.9 a psal pouze
<?php
$form = new Form();
$form->addText('name', 'Jmeno:')
.
.
.
$form->addSubmit('send', 'Ulozit')
echo $form;
?>
Ale vzhledem k tomu, že kvůli Replicatoru, od Kdyby, potřebuji vytvořit
i Callbacky tak si myslím, že bez komponent nepůjde, nemýlím se?
Poradí mi prosím někdo?
Děkuji za rady.
- David Matějka
- Moderator | 6445
Komponenty nepotrebujes a bez presenteru mozna ani nepujdou pouzit.
Ten replicator by asi sel vykreslit pomoci spravneho pouziti group, ale je to trosku komplikovany a z hlavy to nedam :)
To, co hledas je rucni vykreslovani
EDIT: sorry, spatne jsem si precet otazku :)
- amik
- Člen | 118
Ahoj,
callback není nic jiného, než anonymní funkce v PHP, nepotřebuješ k ní
mít komponentový model Nette.
Nejsem si jistý, zda dotaz dobře chápu, ale pokud myslíš callbacky obsluhu
submit událostí, mělo by stačit něco jako
$form->onSuccess[] = function(Form $form) {
// ošetření formuláře
};
// tohle zajistí spuštění obsluhy formuláře bez komponentového modelu Nette.
$form->fireEvents();
Editoval amik (11. 10. 2015 18:13)
- tpmar
- Člen | 30
Jak se dívám do API na fireEvents, tak se mi zdá, že funguje pouze pro onSubmit a onSucces.
Podle příkladu uvedeného v dokumentaci
protected function createComponentMyForm()
{
$form = new Nette\Application\UI\Form;
$removeEvent = callback($this, 'MyFormRemoveElementClicked');
// name, factory, default count
$users = $form->addDynamic('users', function (Container $user) use ($removeEvent) {
// ...
$user->addSubmit('remove', 'Remove')
->setValidationScope(FALSE) # disables validation
->onClick[] = $removeEvent;
}, 1);
$users->addSubmit('add', 'Add next person')
->setValidationScope(FALSE)
->onClick[] = callback($this, 'MyFormAddElementClicked');
// ...
Jsou callbacky pro onClick a v tom už si nevím rady, jak dál.