如何在 laravel 8 中启用恢复软删除项目
How to enable restore a softdeleted item on in laravel 8
我已经使用 softdelete
选项创建了一个 CRUD 模块,但现在我需要将 restore
选项添加到列表 table
我在管理端使用 backpackforlaravel
和 laravel 8。
来自 backpackforlaravel 文档:
https://backpackforlaravel.com/docs 我激活了 软删除:
<?php
namespace App\Http\Controllers\Admin;
use Backpack\CRUD\app\Http\Controllers\CrudController;
class ProductCrudController extends CrudController
{
use \Backpack\CRUD\app\Http\Controllers\Operations\DeleteOperation;
}
我发现这个过滤器可以显示列表中已删除的 项:
$this->crud->addFilter([
'type' => 'simple',
'name' => 'trashed',
'label' => 'Trashed'
],
false,
function($values) { // if the filter is active
$this->crud->query = $this->crud->query->onlyTrashed();
});
现在,如何恢复物品?
已解决,
如果您正在使用 backpackforlaravel
,请应用后续步骤来添加 恢复软删除的项目。
第一步:在Model
上添加这个函数:
此函数将 return 按钮。
public function restoreActionButton()
{
return '<a href="' . url("/admin/product/restore/{$this->id}") . '" class="btn btn-sm btn-link" data-button-type="delete"><i class="la la-trash-restore"></i> Restore </a>';
}
第二步:将route
添加到控制器函数中:
此路线必须与模型中 return 匹配。
Route::get(
'/admin/product/restore/{id}',
[App\Http\Controllers\Admin\ProductCrudController::class, 'restore']
);
第三步:现在恢复功能,把它添加到controller
.
public function restore($id)
{
Product::withTrashed()->find($id)->restore();
return redirect()->back();
}
高于 class
use App\Models\Product;
步骤 4:(可选)在同一 controller
上更新过滤器:
这将在用户应用已删除的过滤器时隐藏所有按钮。
$this->crud->addFilter(
[
'type' => 'simple',
'name' => 'trashed',
'label' => 'Trashed'
],
false,
function ($values) { // if the filter is active
// $this->crud->addClause('trashed');
$this->crud->query = $this->crud->query->onlyTrashed();
$this->crud->removeAllButtonsFromStack('line');
$this->crud->addButtonFromModelFunction('line', 'restore', 'restoreActionButton');
}
);
我已经使用 softdelete
选项创建了一个 CRUD 模块,但现在我需要将 restore
选项添加到列表 table
我在管理端使用 backpackforlaravel
和 laravel 8。
来自 backpackforlaravel 文档: https://backpackforlaravel.com/docs 我激活了 软删除:
<?php
namespace App\Http\Controllers\Admin;
use Backpack\CRUD\app\Http\Controllers\CrudController;
class ProductCrudController extends CrudController
{
use \Backpack\CRUD\app\Http\Controllers\Operations\DeleteOperation;
}
我发现这个过滤器可以显示列表中已删除的 项:
$this->crud->addFilter([
'type' => 'simple',
'name' => 'trashed',
'label' => 'Trashed'
],
false,
function($values) { // if the filter is active
$this->crud->query = $this->crud->query->onlyTrashed();
});
现在,如何恢复物品?
已解决,
如果您正在使用 backpackforlaravel
,请应用后续步骤来添加 恢复软删除的项目。
第一步:在Model
上添加这个函数:
此函数将 return 按钮。
public function restoreActionButton()
{
return '<a href="' . url("/admin/product/restore/{$this->id}") . '" class="btn btn-sm btn-link" data-button-type="delete"><i class="la la-trash-restore"></i> Restore </a>';
}
第二步:将route
添加到控制器函数中:
此路线必须与模型中 return 匹配。
Route::get(
'/admin/product/restore/{id}',
[App\Http\Controllers\Admin\ProductCrudController::class, 'restore']
);
第三步:现在恢复功能,把它添加到controller
.
public function restore($id)
{
Product::withTrashed()->find($id)->restore();
return redirect()->back();
}
高于 class
use App\Models\Product;
步骤 4:(可选)在同一 controller
上更新过滤器:
这将在用户应用已删除的过滤器时隐藏所有按钮。
$this->crud->addFilter(
[
'type' => 'simple',
'name' => 'trashed',
'label' => 'Trashed'
],
false,
function ($values) { // if the filter is active
// $this->crud->addClause('trashed');
$this->crud->query = $this->crud->query->onlyTrashed();
$this->crud->removeAllButtonsFromStack('line');
$this->crud->addButtonFromModelFunction('line', 'restore', 'restoreActionButton');
}
);