2010-05-04 12 views

Répondre

31

De l'intérieur d'un contrôleur:

$this->request->controller

$this->request->action

$this->request->param('paramname')

Contrairement arguments K2 à K3 sont accessibles via Kays que vous définissez dans vos itinéraires.

Prenez par exemple cette url:

Route::set('default', '(<controller>(/<action>(/<id>)))')  
    ->defaults(array('controller' => 'welcome', 'action' => 'index')); 

Pour accéder à l'argument "id" que vous appelez

$this->request->param('id')

Vous ne pouvez pas accéder aux arguments contrôleur/action du param() méthode. Remarque: vous pouvez également utiliser Request::instance() pour obtenir l'instance de requête globale (ou "maître").

Pour plus d'informations, consultez le K3 guide

+0

impressionnant, merci – n00b

+0

Est-ce que cela veut dire que pour chaque "action" vous devez définir un ensemble de clés pour chaque paramètre? Cela ressemble à beaucoup de travail inutile. J'ai lu que simplement passer des arguments à des actions comme dans ** action (arg1, arg2, ...) ** est déconseillé dans K3.1 et sera éliminé dans 3.2 – techexpert

+1

@techexpert Chaque argument que vous voulez passer via les besoins de l'uri à définir dans la route. Si vous utilisez beaucoup de paramètres, vous devriez peut-être utiliser la chaîne de requête à la place. – Matt

3

Pour ceux qui utilisent Kohana> = 3.1, il peut être utile de noter que certaines propriétés de l'objet de demande ont été converties en méthodes.

E.g. Request::controller est maintenant Request::controller() (ou $this->request->controller() lorsque vous êtes dans un contrôleur).

Pour plus d'informations, je voudrais faire référence à la mise à niveau Kohana guide http://kohanaframework.org/3.1/guide/kohana/upgrading

24

réponse Mise à jour pour Kohana 3.2, du user guide:

// From within a controller: 
$this->request->action(); 
$this->request->controller(); 
$this->request->directory(); 

// Can be used anywhere: 
Request::current()->action(); 
Request::current()->controller(); 
Request::current()->directory();