Bonjour,
Petite question, Je suis en train de faire un plugin, et je souhaiterais l'appeler de la façon suivante :
http://localhost/$client/$controller/$action/...
Donc mettre une des variables devant le controller, un peu comme un prefix mais qui n'en est pas un :p
Je ne sais pas si c'est faisable, j'ai lu deux ou trois truc la dessus mais j'ai pas tout bien compris ^^
exemple plus concret : http://localhost/grafikart/planning/3
Ce qui appellerait le planning N° 3 du client Grafikart
Si vous avez une idée, elle sera la bien venue :)
Merci
Salut,
Sa devrai fonctionner avec sa:
Router::connect('/:client/:controller/:action', array('controller' => 'tonController', 'action' => 'tonAction'),array('pass' => array('ici tu fait met les données que tu veut faire passer a ton controller'), 'client' => '[a-zA-Z]+'));
Pour répondre a ton exemple:
Router::connect('/:client/:controller/:id', array('controller' => 'tonController', 'action' => 'tonAction'),array('pass' => array('client', 'id'), 'client' => '[a-zA-Z]+', 'id' => '[0-9]+'));
Tien moi au courant si sa marche ;)
re et merci,
effectivement ca marche :
Router::connect(
'/:client/tests/:action/*',
array('plugin'=>'tests','controller'=>'tests'),
array(
'pass'=>array('client'),
'client'=>"[0-9a-zA-Z]+"
)
);
maintenant, je n'arrive pas a mettre la valeur "tests", cad le nom du plugin et le controller en variable.
pour par exemple faire un tru du genre :
Router::connect(
'/:client/$var/:action/*',
array('plugin'=>$var,'controller'=>$var),
array(
'pass'=>array('client'),
'client'=>"[0-9a-zA-Z]+"
)
);
1 - ca evite d'appeler les plugins d'une facon que je trouve un peu nulle, /plugin/controller/action/...
le plugin et le controller est chez moi identique donc on voit deux fois le meme mot dans l'url.
2 - ca permeterait d'avoir un route global pour tous les plugins.
3 - par contre, impossible d'avoir plusieurs controllers dans un plugin avec cette méthode ...
Essai:
Router::connect(
'/:client/:plugin/:controller/:action/',
array(),
array(
'pass'=>array('client'),
'client'=>"[0-9a-zA-Z]+"
)
);
Et je comprend pas trop le résultat que tu souhaite obtenir si tu pouvais m'expliqué sa plus clairement.
Merci
En fait, ce que j'aimerais faire c'est un site avec un système de plugin indépendant.
Par exemple, des plugins calendrier, forum, album photos etc ... qui serait coder comme plugin dans CakePHP, qu'on pourrait donc télécharger indépendamment.
Après pour appeler les plugins, ce que j'aimeras faire, c'est en premier dans l'url appeler le contrat(le client) puis le plugin, d'où le /:client/:plugin/:controller/*
Mais ce système c'est 'moche' car plugin et controller sont souvent la même chose, donc une répétition dans l'URL.
Imaginons un plugin calendrier : /monclient/calendrier/2
Ca appellerait le calendrier avec l'id 2 et le client_slug monclient.
Avec un Controller, c'est tout de suite beaucoup plus simple :p
Mais pas évident, de faire quelque chose d’indépendant dans ce cas.
Voila j'espère avoir été plus clair
See you :)
Et merci :p
Ouai dans ce cas la c'est pas possible de faire une route unique pour tout les plugins, tu peut faire comme sa :
Router::connect(
'/:client/calendrier/:id',
array('plugin' => 'TonPLugin', 'controller' => 'TonController', 'action' => 'TonAction'),
array(
'pass'=>array('client', 'id'),
'client'=>"[0-9a-zA-Z]+",
'id' => '[0-9]+'
)
);
Et tu fait sa pour chaque plugin, je ne vois pas d'autre solution personnellement. ;)