Routa pro ErrorPresenter, připojení k db v RouterFactory
- Xclick
- Člen | 2
Mám tyto dvě routy a potřeboval bych ještě napsat routu pro ErrorPresenter, v HomepagePresenteru volám $this->redirect(‚Error:405‘)
/**
* Routes for the get template
*/
$router[] = new Route('template/<code>[/<lang>][/<type>][/<pri>][/<sec>][/<ter>]', array(
'presenter' => 'Homepage',
'action' => 'pages'
));
/**
* Routes for standard pages
*/
$router[] = new Route('[<lang>][/<type>][/<pri>][/<sec>][/<ter>]', array(
'presenter' => 'Homepage',
'action' => 'pages',
));
Avšak když napíši něco jako toto, tak „Tato stránka obsahuje smyčku pesměrování“
$router[] = new Route('[<lang>][/<type>][/<pri>][/<sec>][/<ter>]/error', array(
'presenter' => 'Error',
'action' => '405',
));
___________________________________________________
Podle tohoto videa https://www.youtube.com/watch?… jsem chtěl udělat namísto idček v routě třeba namísto ubytovani/4, něco jako ubytovani/nazevpokoje-4
Jakou na to udělat routu a hlavně nazevpokoje potřebuji z databáze. Ve videu se k tomu přistupuje přes container, ale to bylo asi nějaké starší nette, když koukám, že RouterFactory tam vůbec nemají a nemám přístup ke containeru… jak snadno a jednoduše přistoupit k databázi nebo zavolat metodu, co mi vypíše jméno toho nazvupokoje?
- ali
- Člen | 342
Na error presenter nepotrebujes routu, staci ti vyvoval misto toho v presenteru chybu, takto:
$this->error("bla bla bla",405);
K druhemu bodu, routa cca takto:
$frontRoute[] = new Route("pokoj-<pokoj_id>/[<pokoj_name>/]",["presenter" => "Pokoj","action" => "default"]);
Presenter:
protected function startup()
{
parent::startup();
$pokoj = $this->model->getPokoj($this->params["pokoj_id"]);
if(!isSet($this->params["pokoj_name"])){
$this->redirect("Pokoj:default",$pokoj->pokoj_id,$pokoj->pokoj_name);
}
}
public function renderDefault($pokoj_id,$pokoj_name)
{
...
Editoval ali (22. 3. 2015 9:44)
- Xclick
- Člen | 2
- Ale co v případě, kdy mám ErrorPresenter nastavený na vlastní error šablony, které když ve složce nejsou, tak se tepre pak použijí ty běžné. $this->error prostě jen vyhodím výjimku, ale neodkáži se na ErrorPresenter, ne? Kvůli tomu jsem chtěl tu routu :-)
- Čekal jsem spíš odpověď něco jako (což mi samozřejmě nefunguje, ale našel jsem to ve všech podobných dotazech)
private $mujModel;
public function inject(Model\MujModel $mujModel) {
$this->mujModel = $mujModel;
}
- Dá se nastavit cesta k šabloně z presenteru, která není ve složce, která se jmenuje jako presenter?
- ali
- Člen | 342
- Kdyz si vypnes v bootstrapu debug mod, tak ti zacne najizdet error presenter normalne, jenom v debug modu vydis vyjimky
- Samozrejme, abys mohl pouzivat model v presenteru, prvni si ho tam musis injectnout, presne tak jak jsi to napsal + model musis mit zadefinovany v configu, aby sel injectnout
- Urcite to pujde, ale na tohle ti bude muset odpovedet nekdo kdo do presenteru vidi vice jak ja