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