Salut,
Je suis tombé sur ton tutoriel, j'ai voulu le mettre en œuvre mais j'ai été bloqué à plusieurs endroits :
- J'ai l'impression qu'il ne gère pas les modules, tu es dans un contexte controleur/action
- Je n'ai pas compris le sens de cette ligne :
1 2 3
| // Ajout d'un nouvel objet ACL
$this->allow('member', 'forum', 'update', new MyAcl_Forum_Assertion($auth));
// NOTE: Zend_Acl dépend de Zend_Auth, il faut toujours lui passer en paramètre pour obtenir l'identité |
- Dans le chapitre "II-C. Auth.php" le code de la classe est tronqué, j'ai l'impression qu'il manque la fin.
EDIT :
Je viens de me pencher à nouveau sur ton tuto et voilà encore une erreur qui m'a freiné dès le début du tuto lorsque l'on déclare les rôles.
L'erreur est
Fatal error: Can not call constructor in F:\www\zend\index.php on line 36
et voici mon index.php :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
| <?php
error_reporting(E_ALL|E_STRICT);
date_default_timezone_set('Europe/Paris');
include "Zend/Loader.php";
Zend_Loader::loadClass('Zend_Controller_Front');
Zend_Loader::loadClass('Zend_Config_Ini');
Zend_Loader::loadClass('Zend_Registry');
Zend_Loader::loadClass('Zend_Db');
Zend_Loader::loadClass('Zend_Db_Table');
// auth
Zend_Loader::loadClass("Zend_Auth");
Zend_Loader::loadClass("Zend_Auth_Result");
Zend_Loader::loadClass("Zend_Auth_Adapter_Interface");
Zend_Loader::loadClass("Zend_Acl");
// Chargement du fichier ini de config
$config = new Zend_Config_Ini('./application/config.ini', 'general');
$registry = Zend_Registry::getInstance();
$registry->set('config', $config);
// setup database
$db = Zend_Db::factory($config->db->adapter, $config->db->config->toArray());
Zend_Db_Table::setDefaultAdapter($db);
Zend_Registry::set('dbAdapter', $db);
// Create auth object
$auth = Zend_Auth::getInstance();
// Create acl object
class MyAcl extends Zend_Acl
{
public function __construct(Zend_Auth $auth)
{
parent::__construct();
$this->add(new Zend_Acl_Resource('niveau1'));
$this->add(new Zend_Acl_Resource('niveau2'));
// le rôle superviseur aura accès au module nommé Niveau1
$this->addRole(new Zend_Acl_Role('superviseur'));
$this->allow('superviseur', 'niveau1');
// le rôle coordinateur aura accès au module nommé Niveau2
$this->addRole(new Zend_Acl_Role('coordinateur'));
$this->allow('coordinateur', 'niveau2');
// le rôle admin donne accès à tout
$this->addRole(new Zend_Acl_Role('admin'));
$this->allow('admin');
}
}
$acl = new MyAcl($auth);
// setup controller
$frontController = Zend_Controller_Front::getInstance();
$frontController->throwExceptions(true);
$frontController->setControllerDirectory(array(
'default' => 'application/modules/default/controllers',
'niveau1' => 'application/modules/Niveau1/controllers'
));
//$frontController->addModuleDirectory('application/modules');
// run!
$frontController->dispatch(); |
Partager