2010-07-19 13 views
4

J'utilise Kohana 3. Est-ce que quelqu'un sait pourquoi le résultat de param ('controller') est NULL.Kohana param() ne fonctionne pas

Routing:

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

URL: http://localhost/application/page/index/1

Params appelle:

$param = Request::instance()->param('controller'); 
echo Kohana::debug($param); //results: NULL 
$param = Request::instance()->param('action'); 
echo Kohana::debug($param); //results: NULL 
$param = Request::instance()->param('id'); 
echo Kohana::debug($param); //results: 1 

Répondre

6

regarder dans reqeuest.php en ligne 622:

// These are accessible as public vars and can be overloaded 
unset($params['controller'], $params['action'], $params['directory']); 

// Params cannot be changed once matched 
$this->_params = $params; 

c'est pourquoi la ligne 695 ne peut pas revenir rn controller:

public function param($key = NULL, $default = NULL) 
{ 
    return $this->_params[$key]; 
} 

voici comment vous obtenez le contrôleur $controller = Request::instance()->controller; ou $controller = $this->request->controller; si vous l'intérieur d'un contrôleur

+0

Merci beaucoup! Réponse parfaite .. – Bob0101

+0

Est-ce que cela a changé dans Kohana 3.1? :-( – Nick

+0

J'ai répondu à ma question ci-dessous. ;-) – Nick

3

Pour tout le monde en utilisant l'accès Kohana 3.1 le nom du contrôleur de courant et d'action comme celui-ci dans un contrôleur:

$this->request->controller()

$this->request->action()

Ou si vous n'êtes pas dans un contrôleur, vous pouvez toujours accéder aux méthodes de la demande actuelle comme ceci: Request::current()->controller()

Voir system/classes/kohana/request.php pour plus de méthodes que vous pouvez accéder à la même manière.