Yii 在控制器中指定特定于访问规则的错误消息

Yii 在控制器中指定特定于访问规则的错误消息,yii,Yii,我目前使用的是yii 1.1.10版本,在该版本中,我试图通过在accessRules函数中定义消息来指定特定于规则的错误消息,如下所述: public function accessRules() { return array( array('allow', // allow all users to perform 'index' and 'view' actions 'actions'=>array('xxx','yyy'),

我目前使用的是yii 1.1.10版本,在该版本中,我试图通过在accessRules函数中定义消息来指定特定于规则的错误消息,如下所述:

public function accessRules()
{
    return array(
        array('allow', // allow all users to perform 'index' and 'view' actions
            'actions'=>array('xxx','yyy'),
            'users'=>array('*'),
        ),
        array('allow', // allow all users to perform 'index' and 'view' actions
            'message'=>'You must be logged in as Member to perform this action.',
            'actions'=>array('zzz','aaa',),
            'expression'=>'AuthenticationHelper::isSessionUserAdmin()',
        ),
        array('deny', // deny all users
            'users'=>array('*'),
            'message' => "This is a generic message.",
        ),
    );
}

然而,若表达式失败,即使第二次求值失败,我也只能查看根据拒绝规则指定的消息,即“这是一条通用消息”。我们高度赞赏实现所需行为的任何要点。

您可以这样做:

array('allow',
    'message'=>'You must be logged in as Member to perform this action.',
    'actions'=>array('zzz','aaa',),
    'expression'=>'AuthenticationHelper::isSessionUserAdmin()',
),
array('deny',
    'message'=>'You must be logged in as Member to perform this action.',
    'actions'=>array('zzz','aaa',),
    'expression'=>'!AuthenticationHelper::isSessionUserAdmin()',
),

A仅用于
拒绝
规则。如果某件事被允许的话,展示一条信息是没有意义的。嗨,迈克尔,我同意你的观点,但从我的角度来看,如果不同的规则失败,人们希望展示不同的信息。否则,无论哪个规则失败,只显示一条通用消息对最终用户来说没有多大意义。因此,在这种情况下,我认为提供自定义消息的唯一方法是从规则中删除表达式,然后在我的操作中手动检查表达式,如果失败,则适当地显示错误消息。。