如何在laravel 5.4

时间:2017-12-20 05:42:05

标签: php laravel laravel-5.4

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

1) Admin
2) Customer

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

CustomerController.php for customer
AdminController.php for admin

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

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

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

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

4 个答案:

答案 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)

我认为你应该使用模型

在您的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
  }
}

答案 3 :(得分:0)

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

相关问题