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;
}

它检查两个条件:用户有足够的钱和用户有足够的评级。当 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 回答