Search on blog:

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'
    }

}

Kohana w przykładach: domyślny routing z argumentami dla strony

Przekazywanie argumentów do wywoływanej strony

bootstrap:

Route::set( 
    'default-z-argumentami', 
    '(/)((/(/(/(/(/(/(/))))))))', 
    array(
    // argumenty odzielone znakiem '/' (czyli ciągi znaków bez '/')
        'arg1' => '[^/]*', 
        'arg2' => '[^/]*',
        'arg3' => '[^/]*',
        'arg4' => '[^/]*',
        'arg5' => '[^/]*',
    // reszta (czyli wszystkie znaki w tym także '/')
    'rest' => '.*' 
    )
)
->defaults(
    array(
        'controller' => 'welcome',
        'action'     => 'index',
    )
);

controller:

public function action_index() 
{ 
    // pobierania argumentow 
    // jesli argument nie byl podany to param() domyslnie …

« Page: 1 / 1 »