#yii2
#yii2
Вопрос:
Например? У меня есть два BaseController и ChildController. Я хочу присоединить поведение от BaseController, но приоритет имеет поведение (базовое), когда поведение (дочернее).
База:
public function behaviors()
{
return [
'access' => [
'class' => AccessControl::className(),
'rules' => [
[
'allow' => true,
'matchCallback' => function ($rule, $action) {
return ...(true or false)...;
}
],
],
],
];
}
Дочерний:
[
'allow' => true,
'roles' => ['admin'],
'matchCallback' => function($rule, $action) {
return ... can...
}
],
и логика:
если родительский возврат false, то доступ запрещен
если родительский возвращает true, то что возвращает дочерний
как?
Ответ №1:
Это должно вам помочь
public function behaviors()
{
$behaviors = parent::behaviors();
$behaviors['access'] = [
'class' => AccessControl::className(),
'rules' => [
[
'allow' => true,
'matchCallback' => function ($rule, $action) {
return ... can ...;
},
],
],
];
return $behaviors;
}
другой способ может быть:
public function behaviors()
{
$behaviors = parent::behaviors();
$behaviors['access']['rules'][] = [
'allow' => true,
'matchCallback' => function ($rule, $action) {
return ... can ...;
},
];
return $behaviors;
}