如果用户是经理
,我正在尝试更改可用字段beforeSave$this->Crud->on('beforeSave', function(Event $event) {
if($this->Auth->user('role') == 'Manager')
{
$this->Crud->action()->saveOptions(['accessibleFields' => ['verified' => true]]);
}
});
但它似乎不起作用,为什么?
编辑:为了澄清,我正在尝试通过我的API执行PUT HTTP请求并更改“已验证”字段的值。我可以在我的entity.php中更改我设置为可访问的每个字段,但是当我尝试在上面的beforeSave之后更改“已验证”字段时,我看不到对象中的任何更改,因为它似乎没有设置该字段是否可访问。
编辑2:从CRUD插件的官方文档中,我尝试过
$this->Crud->action()->saveOptions(['atomic' => false]);
但无法让它发挥作用。我在crud插件上发送了一个issue GitHub页面,希望能在那里得到更多回复。
感谢您的帮助。
答案 0 :(得分:0)
我在GitHub上找到了我的问题的解决方案
$this->Crud->action()->config('saveOptions.accessibleFields', ['verified' => true])
我必须在我的控制器方法中使用它,我不需要beforeSave。我的代码看起来像这样
if($this->Auth->user('role') == 'Manager') $this->Crud->action()->config('saveOptions.accessibleFields', ['verified' => true]);
$this->Crud->on('afterSave', function(Event $event) {
/*[...]*/
}