使用 CRUD 插件 [CakePHP 3] 更改可访问字段 BeforeSave
Change accessible fields BeforeSave using CRUD plugin [CakePHP 3]
如果用户是经理,我正在尝试更改保存前的可访问字段
$this->Crud->on('beforeSave', function(Event $event) {
if($this->Auth->user('role') == 'Manager')
{
$this->Crud->action()->saveOptions(['accessibleFields' => ['verified' => true]]);
}
});
但是好像不行,为什么?
编辑:澄清一下,我正在尝试通过我的 API 执行 PUT HTTP 请求并更改字段 "verified" 的值。我可以更改我在 entity.php 中设置为可访问的每个字段就好了,但是当我尝试在上面的 beforeSave 之后更改 "verified" 字段时,我没有看到对象有任何变化,因为好像没有设置字段 has accessible.
编辑 2:根据 CRUD 插件的官方文档,我试过这样做
$this->Crud->action()->saveOptions(['atomic' => false]);
但无法正常工作。我已经在 crud 插件 GitHub 页面上发送了一个 issue,希望那里能得到更多回复。
感谢您的帮助。
我在 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) {
/*[...]*/
}
如果用户是经理,我正在尝试更改保存前的可访问字段
$this->Crud->on('beforeSave', function(Event $event) {
if($this->Auth->user('role') == 'Manager')
{
$this->Crud->action()->saveOptions(['accessibleFields' => ['verified' => true]]);
}
});
但是好像不行,为什么?
编辑:澄清一下,我正在尝试通过我的 API 执行 PUT HTTP 请求并更改字段 "verified" 的值。我可以更改我在 entity.php 中设置为可访问的每个字段就好了,但是当我尝试在上面的 beforeSave 之后更改 "verified" 字段时,我没有看到对象有任何变化,因为好像没有设置字段 has accessible.
编辑 2:根据 CRUD 插件的官方文档,我试过这样做
$this->Crud->action()->saveOptions(['atomic' => false]);
但无法正常工作。我已经在 crud 插件 GitHub 页面上发送了一个 issue,希望那里能得到更多回复。
感谢您的帮助。
我在 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) {
/*[...]*/
}