Отображение сообщения об ошибке после использования isAllowed - PullRequest
2 голосов
/ 13 августа 2011

Например, у меня есть эта реализация метода assert в классе, производном от Zend_Acl_Assert_Interface.

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?

1 Ответ

1 голос
/ 14 августа 2011

просто отметьте их один за другим

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

вы можете получать ошибки acl в любом месте вашего приложения с помощью Zend_Registry :: get ('acl_error'); и покажите его пользователю, как вам нравится.

...