úprava – chybné routování v nette
- Taps
- Člen | 169
Zdravím, chci mít adresy ve tvaru www.web.cz/neco. Routování mám
$container->router[] = new Route('index.php', 'Homepage:default', Route::ONE_WAY);
$container->router[] = new Route('<presenter>/<action>[/<id>]', 'Homepage:default');
ale do adresy se mi dostává homepage a pak mám /homepage/o-nas. Mohl by mi někdo poradit jak rout upravit. Děkuji
- pepakriz
- Člen | 246
Jestli chceš mít adresy ve tvaru www.web.cz/<action>, pak:
$container->router[] = new Route('<action>[/<id>]', 'Homepage:default');
což tě ale omezí pouze na jeden presenter.
- Taps
- Člen | 169
Přesně o to mi jde, chtěl bych mít pro každou stránku vlastní presenter. Pak mi mělo stačit v presenteru jen níže uvedené že ? Akorát ještě přemýšlím nad tím jak optimálně vyřešit strukturu když budu mít jen presentery a viewy. Texty nebudu tahat z databáze. Na webu bude jeden kontaktní formulář, který bude informace odesílat na mail
class MujPresenter extends BasePresenter
{
public function renderDefault()
{
}
}\--
- Zdeno1981
- Člen | 116
Jesti tvoříš statiský web, tak si vystačíš s jedním presenterem i routovaním co uvedl pepakriz
jednoduchý přiklad takového presenteru:
class MujPresenter extends BasePresenter {
// navigace
public function beforeRender() {
$this->template->menuItems = array(
'Domů' => 'Homepage:',
'Kontakt' => 'Homepage:kontakt',
);
}
// defaultní zobarení www.web.cz
public function renderDefault() {
}
// kontaktní formulář
protected function createComponentKontakt() {
$form = new Form;
$form->addText('jmeno', 'Vaše jméno:')
->setRequired('Prosím zadejte jméno.');
$form->addText('email', 'Váš email:')
->setRequired('Prosím zadejte váš email.');
$form->addTextArea('obsah', 'Obsah zprávy:')
->setRequired('Prosím zadejte obsah zprávy.');
$form->addSubmit('odeslat', 'Odeslat zprávu');
$form->onSuccess[] = callback($this, 'processKontakt');
return $form;
}
// zpracování formuláře
public function processKontakt(Form $form) {
// hodnoty z formuláře
$values = $form->values;
// odeslání hodnot na email
$mail = new Message;
$mail->setFrom($values->jmeno . '<'.$values->email.'>')
->addTo('muj@email.cz')
->setSubject('Zpráva z kontaktního formuláře')
->setBody($values->obsah)
->send();
}
// wwww.web/kontakt
public function renderKontakt() {
}
}
- kashpi
- Člen | 48
Taps napsal(a):
Zdravím, chci mít adresy ve tvaru www.web.cz/neco. Routování mám
$container->router[] = new Route('index.php', 'Homepage:default', Route::ONE_WAY); $container->router[] = new Route('<presenter>/<action>[/<id>]', 'Homepage:default');
ale do adresy se mi dostává homepage a pak mám /homepage/o-nas. Mohl by mi někdo poradit jak rout upravit. Děkuji
Podle mě ta chyba co tu popisuješ je nejspíš v tom, že špatně
zapisuješ odkaz v šabloně.
To že ti to bere presenter HomepagePresenter a jako action „o-nas“ tak
vypadá, že tvůj odkaz je
<a n:href="aboutus">O nás</a>
místo
<a n:href="Aboutus:">O nás</a>
důležitý je to velký písmenko na začátku slova a pak ta dvojtečka na konci