matt-daneshvar / laravel-resource-actions
Laravel资源操作的通用实现
dev-master
2020-07-03 13:27 UTC
Requires
- php: ^7.3
Requires (Dev)
- orchestra/testbench: ^5.3
- phpunit/phpunit: ^8.5
This package is auto-updated.
Last update: 2024-08-29 05:16:39 UTC
README
如果你已经构建了一打Laravel应用程序,如果你和我一样,你可能会厌倦了一千次地重写基本的CRUD控制器。这个包通过将那些重复的操作提取到几个神奇的特性中来简化你的代码。
安装
使用composer要求包
composer require matt-daneshvar/laravel-resource-actions
使用方法
安装后,你可以编写
class TaskController extends BaseController { use Index, Create, Store, Show, Edit, Update, Destroy; protected $rules = ['name' => 'required|string|max:250']; }
而不是
class TaskController extends BaseController { protected $rules = ['name' => 'required|string|max:250']; public function index() { return view('task.index', ['tasks' => Task::paginate(20)]); } public function create() { return view('task.create'); } public function store(Request $request) { $input = $request->validate($this->rules); Task::create($input); return back()->with('success', 'A new task is successfully created.'); } public function show(Task $task) { return view('task.show', ['task' => $task]); } public function edit(Task $task) { return view('task.edit', ['task' => $task]); } public function update(Task $task, Request $request) { $input = $request->validate($this->rules); $task->update($input); return back()->with('success', 'The task is successfully updated.'); } public function destroy(Task $task) { $task->delete(); return back()->with('success', 'The task is successfully deleted.'); } }
操作
索引
index
操作返回包含相关模型分页集合的resource.index
视图,因此你可以编写
class TaskController extends BaseController { use Index; }
而不是
class TaskController extends BaseController { public function index() { return view('task.index', ['tasks' => Task::paginate(20)]); } }
创建
create
操作返回resource.create
视图,因此你可以编写
class TaskController extends BaseController { use Create; }
而不是
class TaskController extends BaseController { public function create() { return view('task.create'); } }
存储
store
操作将请求与$rules
进行验证,持久化新的模型,并带有成功消息重定向回来。对于这个操作,你可以编写
class TaskController extends BaseController { use Store; protected $rules = ['name' => 'required|string|max:250']; }
而不是
class TaskController extends BaseController { protected $rules = ['name' => 'required|string|max:250']; public function store(Request $request) { $input = $request->validate($this->rules); Task::create($input); return back()->with('success', 'A new task is successfully created.'); } }
显示
show
操作返回带有相关模型的resource.show
视图,因此你可以编写
class TaskController extends BaseController { use Show; }
而不是
class TaskController extends BaseController { public function show(Task $task) { return view('task.show', ['task' => $task]); } }
编辑
edit
操作返回带有相关模型的resource.edit
视图,因此你可以编写
class TaskController extends BaseController { use Edit; }
而不是
class TaskController extends BaseController { public function edit(Task $task) { return view('task.edit', ['task' => $task]); } }
更新
update
操作将请求与$rules
进行验证,更新相关模型,并带有成功消息重定向回来。对于这个操作,你可以编写
class TaskController extends BaseController { use Update; protected $rules = ['name' => 'required|string|max:250']; }
而不是
class TaskController extends BaseController { protected $rules = ['name' => 'required|string|max:250']; public function update(Task $task, Request $request) { $input = $request->validate($this->rules); $task->update($input); return back()->with('success', 'The task is successfully updated.'); } }
销毁
destroy
操作删除相关模型并带有成功消息重定向回来。对于这个操作,你可以编写
class TaskController extends BaseController { use Destroy; }
而不是
class TaskController extends BaseController { public function destroy(Task $task) { $task->delete(); return back()->with('success', 'The task is successfully deleted.'); } }
使用所有操作
如果你打算在控制器中包含所有7个资源操作,你可以使用ResourceActions
特性作为别名
class TaskController extends BaseController { use ResourceActions; }
这相当于
class TaskController extends BaseController { use Index, Create, Store, Show, Edit, Update, Destroy; }
许可
MIT许可(MIT)。有关更多信息,请参阅许可文件。