0

ACLプラグイン内のデータベースからリソースをロードしたい

私はこのように作ります

 class My_ACL extends Zend_Acl {

protected $_role_id;
protected $_userResource;

public function __construct() {

    try {
        $db = Zend_Db_Table::getDefaultAdapter();
        $stmt = $db->query("CALL getUserPrivileges(?)", 998877445);

        //Returns an array containing all of the result set rows  
        $rows = $stmt->fetchAll();

        $stmt->closeCursor();
        print_r($rows);

        return $rows;
    } catch (Exception $e) {
        echo 'error ' . $e;
    }
}

しかし、白いページがレンダリングされ、何も印刷されないため、これは機能しません!

4

1 に答える 1

1

問題を見つけました。問題は、デフォルトのアダプターを初期化する前にデフォルトのデータアダプターを呼び出すことでした。トリックは、データアダプターをブートストラップ内に取得してプラグインに渡す必要があるため、次のようにします。

ブートストラップファイル内

protected function _initPlugins() {
    $this->bootstrap('db');
    $db = $this->getResource('db');
    $front = Zend_Controller_Front::getInstance();
    $front->registerPlugin(new Application_Plugin_Acl($db));
}

そして、Application_Plugin_Aclで、私はこのように作成します

class Application_Plugin_Acl extends Zend_Controller_Plugin_Abstract {

 public function __construct($db) {
    $this->_acl = new My_ACL($db);
}
}

これがmy_ACLです

 class My_ACL extends Zend_Acl {


public function __construct($db) {

     try {

      $stmt = $db->query("CALL getUserPrivileges(?)", 998877445);

      //Returns an array containing all of the result set rows
      $rows = $stmt->fetchAll();

      $stmt->closeCursor();
      print_r($rows);

      return $rows;
      } catch (Exception $e) {
      echo 'error ' . $e;
      }

}
于 2012-05-22T09:22:27.350 に答える