2011-08-13 13 views
2

たとえば、私はZend_Acl_Assert_Interfaceから派生したクラスでこの実装のassertメソッドを持っています。isAllowedを使用した後にエラーメッセージを表示する

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だけを返すときにどの条件が失敗したかをユーザーに知らせるエラーメッセージを表示するには?

答えて

1

は、単にあなたが::なZend_Registryでどこでもあなたの施用でのACLのエラーを取得(「acl_error」)を得ることができます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; 

によってそれらを1つずつ確認してください。あなたの好きなようにそれをユーザーに表示します。

+0

良い解決策。また、$ acl-> getErrors()メソッドのようなものを作成できます。 –

+0

@llya Golotaあなたが私のソリューションが好きなら、マーキングして受け入れてください。 –

+0

副作用は問題ありませんか? –

関連する問題