【问题标题】:Change accessible fields BeforeSave using CRUD plugin [CakePHP 3]使用 CRUD 插件更改可访问字段 BeforeSave [CakePHP 3]
【发布时间】:2017-03-01 21:19:21
【问题描述】:

如果用户是经理,我正在尝试更改 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 插件 GitHub 页面上发送了issue,希望能在那里得到更多回复。

感谢您的帮助。

【问题讨论】:

  • 在什么方面不起作用?你看到了什么而不是你想要的行为?
  • 不会改变字段

标签: php cakephp cakephp-3.0 crud


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-22
    • 2011-08-08
    • 2019-12-04
    • 2016-01-03
    • 1970-01-01
    • 2016-08-25
    • 2016-02-24
    相关资源
    最近更新 更多