如何在laravel 5.4中为多种类型的用户创建通用功能

问题描述 投票:1回答:4

我正在研究laravel项目。这个项目有两个用户

1) Admin
2) Customer

对于客户和管理员,我有各自的控制器

CustomerController.php for customer
AdminController.php for admin

客户的每个模块也可以通过管理员进行操作。就像客户可以从客户的面板以及管理面板添加,并且记录将被插入到用户的表中。

正如我所提到的那样,两者的控制器都不同。这就是为什么现在添加或编辑用户的详细信息,我必须用80%相同的代码编写两个函数,一个在AdminController.php文件中,另一个在CustomerConroller.php文件中。

我希望这个冗余代码可以从单一来源操作。

我应该使用什么方法来实现它,我应该使用模型文件进行CRUD操作吗?

php laravel laravel-5.4
4个回答
0
投票

您可以在laravel中使用角色和权限功能。请通过link获取有关如何在laravel中实现角色和权限的更多信息。


0
投票

看看Service pattern,我们的想法是将逻辑抽象到另一层(服务层),它可以在多个地方使用,如果您将来需要修改它,更容易和更好的维护。您只需要修改一个地方而不是多个地方。

例如,如果您想在多个地方创建优惠券,可以将CreateCouponService注入控制器,您只需将服务作为下面的代码调用(从文章中获取):

public function store(CreateCoupon $request)
{
  $this->createCouponService->make($request);

  return back()->with(['success' => 'Congratulations!']);
}

还有Repository pattern,用于解耦模型和控制器之间的依赖关系。

需要注意的是,如果您只有一个非常直接的CRUD应用程序,那么所有这些都不是强制性的,可能会有些过分。


0
投票

我认为你应该使用模特

在你的AdminControllerCustomerController你可以使用静态函数

 //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
  }
}

0
投票

您可以编写具有通用功能的主类,并使用CustomerController AdminController的继承

© www.soinside.com 2019 - 2024. All rights reserved.