2017-03-01 44 views
3

我試圖改變無障礙領域beforeSave如果用戶是一名經理更改訪問域BeforeSave使用CRUD插件[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請求,並更改字段「已驗證」的值。我可以改變我在entity.php中可以訪問的每個字段,但是當我試圖在beforeSave之後更改「verified」字段時,我沒有看到對象中的任何更改,因爲它似乎沒有設置該字段已訪問。

編輯2:從CRUD插件的官方文檔,我試過做 $this->Crud->action()->saveOptions(['atomic' => false]);,但無法讓它工作。我發送了一個issue的crud插件GitHub頁面,希望能在那裏得到更多的回覆。

感謝您的幫助。

+1

它以什麼方式不起作用?你看到什麼,而不是你想要的行爲? – drmonkeyninja

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