Odkaz ze šablony na formulář
- brontosaurus
- Člen | 49
Mám vytvořený presenter pro zpracování formuláře a šablonu, která formulář vykreslí. Potřeboval bych ale udělat v jiné šabloně odkaz, aby se po kliknutí na něj formulář pro registraci zobrazil. V manuálu jsem našel jen příklady jak do odkazu předat akce z presenteru např. {link Product:show $productId} .Naťukněte mi někdo jak na to. Ď.
- David Matějka
- Moderator | 6445
No tak ten formular je v nejakem presenteru a pro nejakou akci, tak proste udelej odkaz na ten presenter a akci.
- brontosaurus
- Člen | 49
RegisterPresenter(je jen připravený, budu ho dodělávat, teď mi jde hlavně jen o ten odkaz) :
<?php
namespace App\FrontModule\Presenters;
use Nette\Application\UI\Form;
class RegisterPresenter extends BasePresenter
{
public function renderRegister(){
}
protected function createComponentRegisterForm()
{
$form = new UI\Form;
$form->addText('email', 'Email:');
$form->addPassword('password', 'Heslo:');
$form->addSubmit('login', 'Registrovat');
$form->onSuccess[] = array($this, 'registrationFormSucceeded');
return $form;
}
// volá se po úspěšném odeslání formuláře
public function registerFormSucceeded(UI\Form $form, $values)
{
$Id = $this->getParameter('Id');
$this->database->table('users')->insert(array(
'id' => $values->Id,
'email' => $values->email,
'password' => $values->password,
));
$this->flashMessage('Byl jste úspěšně registrován.');
$this->redirect('Homepage:');
}
}
?>
register.latte :
<?php
{block #content}
<h2>Registrovat</h2>
{control registerForm}
?>
a v @layout.latte mám na ten formulář odkaz :
<?php
<a href="{plink Register:Register}">Registrovat</a>
?>
Tedy, jdi do presenteru Register na akci Register . A Nette chce hledat ve
složce ..\Register\register.latte . Ten tam opravdu není.
Page not found. Missing template
‚…/www/nette-blog/app/FrontModule/templates/Register/register.latte‘.
Něco mám špatně a nevím co ..
- David Matějka
- Moderator | 6445
- pri odkazovani pis u akce male pismeno, nekde to muze zpusobovat problemy,
takze
{link Register:register}
- a kde tedy ta sablona je?
- brontosaurus
- Člen | 49
Zkoušel jsem to i s malým písmenem ale chyba je stejná. Cesta k šabloně: /app/FrontModule/templates/register.latte
- David Matějka
- Moderator | 6445
to je samozrejme spatne, kdyz je to presenter Register
a akce
register
, tak to ma byt
v /app/FrontModule/templates/Register/register.latte
- brontosaurus
- Člen | 49
Jo tak, myslel jsem, že to nette pozná nějak podle řetězců v názvech presenterů,akce a šablony..To bolí. Jdu to zkusit.