Bonjour,
Je suis entrain de développer une administration et j'ai un petit soucis puisque j'utilise une méthode actuelle que je pense est 'barbare'. Il doit exister une meilleur méthode je pense.
Je dois arriver a un lien égale à :
Voilà et pour l'instant j'utilise un switch avec un argument :
(Tout ce code se situe dans 'ParcoursController').
public function dashboard_events($action = 'index', $id = null){
$this->set('action', $action);
switch($action){
case 'index':
$d = $this->Articles->find('all', array('conditions' => array(
'Articles.type' => 'event')));
$this->set('articles', $d);
break;
case 'add':
break;
case 'delete':
break;
case 'update':
debug($this->request->params);
break;
}
}
Donc dans la vue je dois aussi utiliser le switch :
<?php
switch($action){
case 'index': ?>
<?php
break;
case 'delete': ?>
<?php
break;
case 'add': ?>
add
<?php
break;
case 'update': ?>
<?php
break;
}
?>
Merci beaucoup de votre aide.
Si vous avez des idées, si je fais mal des choses comme les liens pour supprimer les 'posts'. Je suis preneur.
Bonjour.
Pour l'action dans le controller, tu peux garder ce code, par contre, pour la vue tu pourrais rendre sur une vue différente selon l'action demandée si celle-ci n'est pas l'action index (voir Rendre une vue spécifique).
Ce qui t'évitera de faire un switch
dans l'action du controller et dans la vue.
@Onouriis n'a pas tort !
Plutôt que de briser la convention de CakePhp, la configuration des routes serait la solution pour ton cas.
Attention version 3 de cakephp (à voir quand même la config des routes pour la version 2)
Dans ton fichier routes.php :
$routes->connect('/dashboard/parcours/events/', ['controller' => 'Articles', 'action' => 'index']);
$routes->connect('/dashboard/parcours/events/add', ['controller' => 'Articles', 'action' => 'add']);
$routes->connect('/dashboard/parcours/events/edit/:id',['controller' => 'Articles', 'action' => 'edit'],['pass' => ['id'],'id' => '[0-9]+']);
$routes->connect('/dashboard/parcours/events/delete/:id',['controller' => 'Articles', 'action' => 'delete'],['pass' => ['id'],'id' => '[0-9]+']);
Voilà, bon cela c'est une chose, mais cela ne résoud pas réellement ton application.
Car en voyant ton slug "dashboard" j'imagine qu'un utilisateur est loggé ?
L'idéal c'est qu'une fois loggé (AuthComponent) , on applique la route de préfixe.
je t'invite à jetter un oeil sur ce lien, tu pourras t'amuser
http://book.cakephp.org/3.0/fr/development/routing.html#prefix-routing