2

たとえば、Zend_Acl_Assert_Interface から派生したクラスに assert メソッドを実装しています。

function assert(
    Zend_Acl $acl,
    Zend_Acl_Role_Interface $user = null,
    Zend_Acl_Resource_Interface $item = null,
    $privilege = null
) {
    if (!$user instanceof User) throw new Exception("…");
    if (!$item instanceof Item) throw new Exception("…");

    return
        $user->money >= $item->price &&
        $user->rating >= $item->requiredRating;
}

ユーザーが十分なお金を持っていることと、ユーザーが十分な評価を持っていることの 2 つの条件をチェックします。isAllowed メソッドが bool のみを返すときにどの条件が失敗したかをユーザーに知らせるエラー メッセージを表示する方法は?

4

1 に答える 1

1

一つ一つチェックするだけ

$error = array();
if(!($user->money >= $item->price))
$error[] = "user money is less then price";

if(!($user->rating >= $item->requiredRating))
$error[] = "user rating less then required rating ";

Zend_Registery::set('acl_error',$error);
if(count($error) == 2) return false;

return true;

Zend_Registry::get('acl_error') により、アプリケーション内のどこからでも acl エラーを取得できます。好きなようにユーザーに表示します。

于 2011-08-14T01:49:21.210 に答える