Laravel-admin: 删除记录的时候不走 destroy 方法,而是 _handle_action_

Created on 29 Jul 2019  ·  11Comments  ·  Source: z-song/laravel-admin

  • Laravel Version: 5.5.*
  • PHP Version: 7.1
  • Laravel-admin: 1.7.5

单挑操作删除数据的时候不是走到每个的 destroy 方法,而是 公共的,怎么处理这个问题?

Most helpful comment

這是同一件事,我只是說另外一個影響而已。

本來的執行順序是 Controller -> HasResourceActions@destory($id) -> Form@destory($id),然後 Form@deleteFiles() 會在這邊順便被執行。

改用 RowAction 後,這整段都跳過了,只會直接執行 $model->delete()。所以連表單的回調 $form->deleting() 跟 $form->deleted 也被跳過了。只能透過 Model Event/Observer 進行額外處理。

All 11 comments

有什么问题?

@z-song 不好意思,没描述清楚我的意思。想知道为什么不优先 destroy 方法。如果要做处理怎么解决?

用新的 RowAction 的話,Form 的 deleteFiles() 不會被執行了。若 model 有檔案,得自己刪除了。

@mis3085 不是deleteFiles, 我是指控制器的destroy方法

這是同一件事,我只是說另外一個影響而已。

本來的執行順序是 Controller -> HasResourceActions@destory($id) -> Form@destory($id),然後 Form@deleteFiles() 會在這邊順便被執行。

改用 RowAction 後,這整段都跳過了,只會直接執行 $model->delete()。所以連表單的回調 $form->deleting() 跟 $form->deleted 也被跳過了。只能透過 Model Event/Observer 進行額外處理。

這是同一件事,我只是說另外一個影響而已。

本來的執行順序是 Controller -> HasResourceActions@destory($id) -> Form@destory($id),然後 Form@deleteFiles() 會在這邊順便被執行。

改用 RowAction 後,這整段都跳過了,只會直接執行 $model->delete()。所以連表單的回調 $form->deleting() 跟 $form->deleted 也被跳過了。只能透過 Model Event/Observer 進行額外處理。

大佬解决了吗,我的删除回调也失效了,没有执行

现在的做法是:

$actions->disableDelete();
// 然后自己自定义一个 删除 Action

@DavidNineRoc 您好?现在有更好的解决方案吗?

@wper 自定义删除 action

@DavidNineRoc thx

我是这样解决的。 #4151

Was this page helpful?
0 / 5 - 0 ratings