我正在研究larvel项目。这个项目有两个用户
1) Admin
2) Customer
对于客户和管理员我有各自的控制器
CustomerController.php for customer
AdminController.php for admin
客户的每个模块也可以通过管理员进行操作。 就像客户可以从客户的面板以及管理面板添加,并且记录将被插入到用户的表中。
正如我所提到的,两者的控制器都不同。这就是添加或编辑用户详细信息的原因,我现在必须编写两个80%相同代码的函数,一个在AdminController.php文件中,另一个在CustomerConroller.php文件中。
我希望这个冗余代码可以从单一来源操作。
我应该使用什么方法来实现它,我应该使用模型文件进行CRUD操作吗?
答案 0 :(得分:0)
您可以在laravel中使用角色和权限功能。 请浏览link以获取有关如何在laravel中实现角色和权限的更多信息。
答案 1 :(得分:0)
看看Service
pattern,想法是你将逻辑抽象到另一个层(服务层),它可以在多个地方使用,如果你将来需要修改它,更容易和更好的维护。您只需要修改一个地方而不是多个地方。
例如,如果您想在多个地方创建优惠券,可以将CreateCouponService
注入控制器,您只需将服务作为以下代码调用(参阅文章):
public function store(CreateCoupon $request)
{
$this->createCouponService->make($request);
return back()->with(['success' => 'Congratulations!']);
}
还有Repository
pattern,用于解耦模型和控制器之间的依赖关系。
需要注意的是,所有这些都不是强制性的,如果您只有一个非常直接的CRUD应用程序,那么可能会有些过分。
答案 2 :(得分:0)
我认为你应该使用模型
在您的AdminController
和CustomerController
中,您可以使用静态函数
//your controller method
public function store(Request $request){
Yourmodel::save_request($request);
return 'save';
}
// your model class
class Yourmodel{
public static function save_request($request){
// do sometining
}
}
答案 3 :(得分:0)
您可以编写具有通用功能的主类并使用继承 CustomerController AdminController