2010-12-13 59 views
0

Voici un de mes itinéraires ...Puis-je faire cela avec une définition d'itinéraire dans Kohana 3?

Route::set('products', 'our-products(/<product>)') 
->defaults(array(
    'controller' => 'products', 
    'action'  => FALSE 
)); 

En visitant /our-products, vous pouvez accéder à des produits index (qui appellera Controller_Products::action_index()).

Je veux la route de travailler comme suit: lors de l'ajout d'un produit facultatif, il doit appeler une méthode différente, à savoir si /our-products/product-a est demandée, au lieu d'appeler Controller_Products::action_index(), il appelle quelque chose comme Controller_Products::action_get('product-a'). Je réalise que je pourrais le faire facilement avec deux routes, mais je préfère le faire avec un.

Je pense aussi à propos de la vérification du param dans action_index(), et en appelant une autre méthode, mais cela semblait moche.

J'ai aussi essayé __call() mais eu cette erreur très inhabituelle ...

Fatal error: Class declarations may not be nested in /home/user/public_html/~new/system/classes/date.php on line 3

Est-il possible de faire ce que je veux? Quel est le meilleur moyen?

Merci

+0

Pourquoi voulez-vous faire dans une route? Les routes ont été inventées pour séparer différentes demandes à différentes actions. – zerkms

+0

@zerkms Ils semblent assez proches pour aller dans une route. – alex

+0

@alex: ne suis pas d'accord. Si vous avez différents 'defaults' selon les valeurs de l'URL - ils ne semblent pas être liés à un (c'est mon opinion personnelle). – zerkms

Répondre

0
  1. Vérifiez product dans action_get() méthode param et appeler action_index() (ou autre) si elle est vide.
  2. Lisez this topic à propos de votre erreur inhabituelle.
0

surcharge l'action dans la méthode Controller::before(), comme ceci:

if ($this->request->param('product')) 
{ 
    $this->request->action = 'get'; 
}