Vykreslení komponenty do PHP, ne šablony

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
tpmar
Člen | 30
+
0
-

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
+
0
-

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
+
+1
-

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
+
0
-

Ruční vykreslení se mi postará také o události?
Jedná se mi o události obshluhující přídávání a odebírání inputů. Ale na fireEvents se ještě podívám taky, jestli by mi to nestačilo. Děkuji :-)

amik
Člen | 118
+
0
-

Nevím, jaké události myslíš, odkud se volají atd. Nejlepší je to vyzkoušet a uvidíš, co bude a nebude fungovat, případně přijdeš s konktétnějším problémem.

tpmar
Člen | 30
+
0
-

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.