Bonjour,
J'ai une petite sur l'organisation d'un CRM. Je prévois 3 types d'utilisateurs : Admin,Developpeur,Client.
Ensuite j'ai mes controllers par exemple ProjectController et dedans les fonctions du style developpeur_new...
Mais je veux qu'un admin puisse l'utiliser mais du coup on aura comme adresse /developpeur/project/new alors que c'est un admin qui est connecte. Bref, je m'embrouille un peu avec tout ça : je débute sur CakePHP ^^.
Si quelqu'un pouvait m'expliquer comment je devrais faire ;) Merci !
Bonjour,
Si tu utilises les rôles de Cake il faut en effet "jouer fin" au niveau de ton controlleur.
En fait l'idée c'est d'avoir une méthode privée générique qui sera appelée par les méthodes préfixées par le role.
Dans ton exemple, l'admin ET le développeur sont censés pouvoir accéder à une méthode new(). Exemple dans ton controlleur Projects:
<?php
App::uses('AppController', 'Controller');
/**
* Contacts Controller
*
* @property Contact $Contact
*/
class ProjectsController extends AppController {
var $uses = array('Project');
/**
* Méthode générique utilisée par le role de l'admin et du développeur
*/
private function __new(){
// Ici le code de ta méthode générique
}
public function developpeur_new(){
// En amont tu peux éventuellement executer du code avant l'appel de la méthode _new,
/**
* [Code en Amont]
*/
// Puis on appel la méthode générique
$this->__new();
}
public function admin_new(){
// En amont tu peux éventuellement executer du code avant l'appel de la méthode _new,
/**
* [Code en Amont]
*/
// Puis on appel la méthode générique
$this->__new();
}
Happy Baking !
J'ai oublié de préciser que si tes deux vues peuvent être les mêmes, tu peux ajouter un
$this->render(View/Project/new.ctp);
à la fin de méthode __new();
Merci beaucoup ! Pourquoi mettre 2 _ ? Dans la doc ils disent :
<?php
class NewsController extends AppController {
public function latest() {
$this->_findNewArticles();
}
protected function _findNewArticles() {
// Logic to find latest news articles
}
}
Bonjour,
Par convention, les méthodes protected ont un seul "_", mais les méthodes private en ont deux "__" : http://book.cakephp.org/2.0/en/contributing/cakephp-coding-conventions.html#member-visibility
Happy Baking !