如何在 Laravel 中创建通用控制器时保持 DRY?
How to keep DRY while creating common controllers in Laravel?
当我开发我的 Laravel 应用程序时,我注意到我正在创建非常相似的控制器方法。例如,我有模型:Task、Block、Lesson 等。在每个控制器中都有非常相似的方法:
public function index()
{
return new GeneralResource(/model/::all());
}
public function show(/model/ $model)
{
return new GeneralResource($model);
}
public function store(/model/Request $request)
{
try {
$model = /model/::create($request->validated());
return response()->json(['status' => 'success']);
} catch (\Exception $e) {
echo $e->getMessage();
}
}
public function update(/model/Request $request, /model/ $model)
{
try {
$model->update($request->validated());
return response()->json(['status' => 'success']);
} catch (\Exception $e) {
echo $e->getMessage();
}
}
public function destroy(/model/ $model)
{
try {
$model->delete();
return response()->json(['status' => 'success']);
} catch (\Exception $e) {
echo $e->getMessage();
}
}
也许我可以使用这些方法扩展 Controller class 并将参数作为受保护的属性传递,但我不确定如何做到这一点。
拜托,帮忙。
当我开发我的 Laravel 应用程序时,我注意到我正在创建非常相似的控制器方法。例如,我有模型:Task、Block、Lesson 等。在每个控制器中都有非常相似的方法:
public function index()
{
return new GeneralResource(/model/::all());
}
public function show(/model/ $model)
{
return new GeneralResource($model);
}
public function store(/model/Request $request)
{
try {
$model = /model/::create($request->validated());
return response()->json(['status' => 'success']);
} catch (\Exception $e) {
echo $e->getMessage();
}
}
public function update(/model/Request $request, /model/ $model)
{
try {
$model->update($request->validated());
return response()->json(['status' => 'success']);
} catch (\Exception $e) {
echo $e->getMessage();
}
}
public function destroy(/model/ $model)
{
try {
$model->delete();
return response()->json(['status' => 'success']);
} catch (\Exception $e) {
echo $e->getMessage();
}
}
也许我可以使用这些方法扩展 Controller class 并将参数作为受保护的属性传递,但我不确定如何做到这一点。
拜托,帮忙。