2011-11-04 3 views
1

J'ai plusieurs préfixes en jeu dans une application CakePHP existante. J'ai aussi un peu de navigation primaire dans la mise en page qui pointe vers des méthodes partagées. Je sais que je peux définir explicitement chaque préfixe à false pour éviter de créer un lien avec le préfixe, mais y a-t-il un chemin de raccourci qui indique simplement à Cake de ne pas utiliser de préfixe quel que soit le contexte existant? Par exemple, je suis sur une page où un agent immobilier peut s'enregistrer (/realtor/users/register).J'ai un préfixe similaire pour les inspecteurs et les entrepreneurs parce que le processus d'inscription est légèrement différent. Comme je ne suis pas authentifié, il y a un lien Connexion dans le nav primaire, mais l'action de connexion est partagée par tous les types d'utilisateurs et devrait être accessible sans aucun préfixe.Effacement de tous les préfixes

<?php echo $this->Html->link('Login', array('controller' => 'users', 'action' => 'login', 'realtor' => false, 'inspector' => false, 'contractor' => false)) ?> 

Je voudrais pouvoir, dans le lien, juste désactiver tous les préfixant plutôt que de se tourner indépendamment de chaque préfixe possible. Possible?

+0

possible avec une méthode auxiliaire. utilisez-vous Configure :: write ('Routing.prefixes') pour les définir? – mark

+0

Oui, les préfixes sont définis en utilisant routing.prefixes. –

Répondre

1

Si perdre les capacités de routage n'est pas un problème pour vous, vous pouvez passer une chaîne au lieu d'un tableau sur le lien() Méthode:

<?php 
echo $this->Html->link('Login', '/users/login'); 
?> 

EDIT

Pour maintenir le mécanisme de routage , voici un petit assistant qui ferait l'affaire:

class MyHtmlHelper extends HtmlHelper 
{ 
    public function link($title, $url = null, $options = array(), $confirmMessage = false) 
    { 
     $prefixes = Router::prefixes(); 

     foreach($prefixes as $prefix) 
     { 
      $url[$prefix] = false; 
     } 

     return parent::link($title, $url, $options, $confirmMessage); 
    } 
} 

vous pouvez changer le cours Off nom de la méthode si vous voulez garder la méthode standard link(). J'ai testé cela avec Cake2, mais cela devrait fonctionner avec Cake1.3

+0

Ouais, je préfère vraiment ne pas perdre le routage. –

+0

OK, j'ai édité ma réponse avec un exemple d'aide qui pourrait peut-être répondre à vos besoins – nIcO

+0

Je fais quelque chose de similaire. votre solution semble encore plus courte et plus facile je dois admettre. Astuce: appelez-le defaultLink() - c'est ce que j'ai appelé le mien – mark

4

Je sais que cela fait 2 ans que la question ci-dessus a été répondue, bien que je pense avoir trouvé une manière encore moins intrusive d'accomplir ce que vous voulez.
Définissez le nom du préfixe dynamiquement en prenant la valeur de préfixe actuel de $this->params et le mettre à false, comme si

$this->Html->link('hello', array($this->params['prefix']=>false, 'controller'=>'posts','action'=>'index')); 

La valeur de $this->params['prefix'] sera celui et pertinent à ce moment pour mettre à false.

acclame

Questions connexes