blog.furas.pl
# prywatne notatki - Python, Linux, Machine Learning, etc.

Kohana w przykładach: routing z jednym uniwersalnym argumentem

Przechwytywanie wszystkiego co zostało podane po controller/action
np: www.domena.pl/welcome/index/hack,this,site lub www.domena.pl/welcome/index/kod-promocyjny-programu-partnerskiego
Standarowy (default) routing w przypadku dodania argumentu nie przechwyci adresu strony.

bootstrap:

Route::set( 
    'default-z-jednym-argumentem', 
    '(/)((/(/)))', 
    array(
    // reszta (czyli wszystkie znaki w tym także '/')
    'rest' => '.*' 
    )
)
->defaults(
    array(
        'controller' => 'welcome',
        'action'     => 'index',
    )
);

controller:

class Controller_Welcome extends Controller 
{

    public function action_index() 
    { 
        // pobierania argumentow 
        // jesli argument nie byl podany to param() domyslnie zwroci NULL
        $my_rest = $this->request->param('rest');

        // wypisanie argumentow 
        // poniewaz wartosci NULL niewypisze wiec zamieniamy na odpowiedni tekst
        echo 'rest: ', ( $my_rest === NULL ? 'NULL' : $my_rest ), '', PHP_EOL;

        // rest zawiera wszystko co bylo podane i teraz zostaje jego samodzielna interpretacja

        // gdy $my_rest = A/B/C/D 
        // (www.domena.pl/welcome/index/A/B/C/D)
        $my_args = explode( '/', $my_rest );
        echo $my_args[0]; // 'A'
        echo $my_args[1]; // 'B'
        echo $my_args[2]; // 'C'
        echo $my_args[3]; // 'D'

        // gdy $my_rest = A,B,C,D 
        // (www.domena.pl/welcome/index/A,B,C,D)
        $my_args = explode( ',', $my_rest );
        echo $my_args[0]; // 'A'
        echo $my_args[1]; // 'B'
        echo $my_args[2]; // 'C'
        echo $my_args[3]; // 'D'

        // gdy $my_rest = A-B-C-D 
        // (www.domena.pl/welcome/index/A-B-C-D)
        $my_args = explode( '-', $my_rest );
        echo $my_args[0]; // 'A'
        echo $my_args[1]; // 'B'
        echo $my_args[2]; // 'C'
        echo $my_args[3]; // 'D'

        // gdy $my_rest = sort=id,page=2,title=hello-world-of-kohana 
        // (www.domena.pl/welcome/index/sort=id,page=2,title=hello-world-of-kohana)
        $my_args = explode( ',', $my_rest );
        echo $my_args[0], '', PHP_EOL; // 'sort=id'
        echo $my_args[1], '', PHP_EOL; // 'page=2'
        echo $my_args[2], '', PHP_EOL; // 'title=hello-world-of-kohana'
    }

}
Książki: python-dla-kazdego-podstawy-programowania python-wprowadzenie python-leksykon-kieszonkowy python-receptury python-programuj-szybko-i-wydajnie python-projekty-do-wykorzystania black-hat-python-jezyk-python-dla-hackerow-i-pentesterow efektywny-python-59-sposobow-na-lepszy-kod tdd-w-praktyce-niezawodny-kod-w-jezyku-python aplikacje-internetowe-z-django-najlepsze-receptury