更改可访问字段BeforeSave使用CRUD插件[CakePHP 3]

时间:2017-03-01 21:19:22

标签: php cakephp cakephp-3.0 crud

如果用户是经理

,我正在尝试更改可用字段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页面,希望能在那里得到更多回复。

感谢您的帮助。

1 个答案:

答案 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) {
    /*[...]*/
}