Implementacia nette formulara do sablony
- Vastlik
- Člen | 58
Ahoj,
koukni se na Dokumentaci První
formulář nebo se nech inspirovat v sandboxu
Pokud to máš za pomocí factory, musíš si ten formulář nainjectovat do
presenteru.
Editoval Vastlik (10. 2. 2016 20:07)
- Takeshi
- Člen | 596
Vastlik napsal(a):
Ahoj,
koukni se na Dokumentaci První formulář nebo se nech inspirovat v sandboxu
Pokud to máš za pomocí factory, musíš si ten formulář nainjectovat do presenteru.
dik ale ako si to injectnem a ako nasledne nacitam do sablony?
- Vastlik
- Člen | 58
V presenteru.
/** @var SignFormFactory @inject */
public $factory;
/**
* Sign-in form factory.
* @return Nette\Application\UI\Form
*/
protected function createComponentSignInForm()
{
$form = $this->factory->create();
$form->onSuccess[] = function () {
$this->redirect('Homepage:');
};
return $form;
}
V šabloně:
{control signIn}
Vysvětlím ten presenter.
Za pomocí tohoto kódu si nainjectues ten formulář do presenteru. Ten
formulář musíš mít zaregistrovaný v configu.
/** @var SignFormFactory @inject */
public $factory;
Za pomocí tohodle, vytvoříš ten formulář.
$form = $this->factory->create();
– vytvoření
formuláře
$form->onSuccess[] = function () {
$this->redirect('Homepage:');
};
return $form;
– vrací formulář, dke si ho pak šablona
veme (nejsem si jist, možná mě někdo opraví)
za pomocí createComponentSignInForm
, říkáš, vytvoř componentu
se jménem signIn
protected function createComponentSignInForm()
{
$form = $this->factory->create();
$form->onSuccess[] = function () {
$this->redirect('Homepage:');
};
return $form;
}
Editoval Vastlik (10. 2. 2016 20:59)
- Takeshi
- Člen | 596
Dakujem za odpoved, zdalo sa mi, ze toto bude na sto % fungovat, ale mam tam niekde chybu … skusal som ju napravit, ale bez vysledku … takze
config.neon
<?php
services:
- App\Forms\SignFormFactory
?>
BasePresenter.php
<?php
namespace App\Presenters;
use Nette;
use App\Model;
use Nette\Application\UI;
/**
* Base presenter for all application presenters.
*/
abstract class BasePresenter extends Nette\Application\UI\Presenter
{
/** @var \SignFormFactory @inject */
public $factory;
/**
* Sign-in form factory.
* @return Nette\Application\UI\Form
*/
protected function createComponentSignInForm()
{
$form = $this->factory->create();
$form->onSuccess[] = function(){
$this->redirect('Homepage:');
};
return $form;
}
}
?>
*.latte
<?php
{control signIn}
?>
Chyba
<?php
Class or interface 'SignFormFactory' used in @var annotation at App\Presenters\BasePresenter::$factory not found. Check annotation and 'use' statements.
?>