2010-03-25 20 views
0

D'abord désolé pour le woffle car je ne suis pas sûr de la meilleure façon de le décrire. Fondamentalement je ne suis pas sûr comment je peux obtenir le param dans le bootstrap avant que le contrôleur soit chargé, mais voici la version longue ...zend_acl: Ajout dynamique de ressources supplémentaires et obtention d'une prédispatch param

J'ai une classe acl qui stocke toutes mes ressources par défaut dans. Toute ma page/Le contenu du post est une base de données et je veux que l'administrateur puisse choisir le rôle que la page deviendrait disponible.

Je sais qu'il est possible de simplement faire une boucle dans la table de la base de données et de les ajouter tous en même temps, mais je suis préoccupé par le fait que c'est une perte de ressources. Je l'ai fonctionnant par lequel mon plugin de vérification d'accès peut appeler une fonction d'autorisation dynamique, mais j'ai besoin d'obtenir le paramètre de l'ID de page en cours et il est autorisé à le définir avant le chargement du contrôleur.

Est-ce que cela a du sens ou est-ce que je m'inquiète pour rien et je devrais obtenir les ressources de toutes les pages à la fois?

merci d'avance pour lire mon garble !!

Répondre

1

J'ai effectivement réussi à trouver ce dont j'avais besoin en lisant le manuel de zend! DOH!

J'ai simplement besoin d'utiliser les getParams $ request->() qui me permettent d'obtenir id poste de l'url

alors je pourrais définir l'autorisation avec la méthode suivante

passe en dessous de le contrôle d'accès pluging

$params = $request->getParams();  
$this->_acl->setDynamicPermissions($params['post_id']); 

Et cela dans la classe Acl

public function setDynamicPermissions($id) { 

    $id    = (int)$id; 
    $page_id  = "page-" . $id; 

    $post   = new Model_DbTable_Post(); 
    $restriction = $post->getPostRestriction($id); 


    $this->add(new Zend_Acl_Resource($page_id)); 
    $this->allow($restriction, $page_id); 

}