NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Routování index action

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Martin Štěpánek :23.4.2017 15:01

Ahoj,
řeším problém ohledně routování, přesněji rozpoznání parametrů v adrese.
Routování funguje takto: www.example.com/…/param/param
Tedy adresa www.example.com/…cles/edit/32 spustí kontroler ArticleController a na něm zavolá metodu actionEdit() a do vlastnosti třídy uloží parametry v poli. Tahle třída může vypadat takto:

class ArticleController extends Controller{

        public function actionEdit(){
                print_r($this->data); // vypíše (1 => 32)
                // some code
        }

}

Pokud však není zadána akce, automaticky se zavolá metoda actionIndex().
Tato adresa: article/32 by měla zavolat metodu actionIndex() na kontroleru Article a 32 jsou parametry, jenže jak poznat co jsou parametry a co jméno metody aniž bych to musel vždy v metodě actionIndex() kontrolovat.

V tomhle případě je jasné, že číslo není názvem metody takže to musí být parametr, ale v tomto případě:
user/martin nemám jak zjistit, jestli se má zavolat metoda actionIndex() a té předat parametr martin, nebo přesměrovat na chybovou stránku 404...
Předem děkuji za pomoc :-)

Odpovědět
23.4.2017 15:01
Všechno jde naprogramovat, chce to jen čas a chuť...
Avatar
Jan Lupčík
Tvůrce
Avatar
Odpovídá na Martin Štěpánek
Jan Lupčík:23.4.2017 15:12

Ahoj,
nejdříve by bylo dobré pokusit se zavolat metodu pomocí 1. parametru a pokud se to nepodaří (tj. metoda neexistuje), předá se daný parametr "výchozí" metodě (u tebe actionIndex()). To stačí tedy nějak vyřešit v routeru nebo ve výchozím kontroleru (nevím, jak to řešíš) a je to.
Škoda, že jsi neuvedl momentální kód toho, jak to zpracováváš - mohl jsem ti rovnou upravit ten kód.
Snad ti to ale i tak pomůže. :)

Nahoru Odpovědět
23.4.2017 15:12
TruckersMP vývojář
Avatar
Odpovídá na Jan Lupčík
Martin Štěpánek :23.4.2017 15:52

To už mám, jde mi o rozpoznání, jestli nemám přesměrovat na 404, protože s tímhle přístupem se i s chybnou adresou zobrazí nějaká stránka a chybná adresa bude předpokládaná jako parametr...

Nahoru Odpovědět
23.4.2017 15:52
Všechno jde naprogramovat, chce to jen čas a chuť...
Avatar
Jan Lupčík
Tvůrce
Avatar
Odpovídá na Martin Štěpánek
Jan Lupčík:23.4.2017 15:56

Tak pokud máš např. to user, tak ti to má načíst UserController, ne? Pokud není nalezen vybraný kontroler, tak přesměruješ na 404. A s těmi parametry pro kontroler jsem to psal již výše. :)

Nahoru Odpovědět
23.4.2017 15:56
TruckersMP vývojář
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.