【发布时间】:2020-01-08 18:10:03
【问题描述】:
我的控制器已经工作并完成。但我观察到代码的冗余/重复。
专门针对以下代码:
$this->authorize('applicant', $job);
这是我的控制器中的完整代码:
public function interviewees(Job $job)
{
//more codes
}
public function applicants(Job $job)
{
//more codes
}
public function apply(Job $job)
{
$this->authorize('applicant', $job);
//more codes
}
public function cancel(Job $job)
{
$this->authorize('applicant', $job);
//more codes
}
//and 5 more methods using same code of $this->authorize('applicant', $job);
我的问题是在 php 或 laravel 中我们可以处理这种情况,减少冗余代码吗?
【问题讨论】:
-
如果这需要为每个动作触发,那么只需将授权调用移动到您的构造函数。 (或任何 Laravel 提供的等效启动机制。)
-
@AlexHowansky 我也这么认为,另外一个问题是,有些方法没有
$this->authorize('applicant', $job);。谢谢先生回复 -
啊,好吧,我对 Laravel 不熟悉,不确定
setUp()和ignore()是否是操作。 -
您可以将其拆分为两个控制器,将需要身份验证的操作放在一个控制器中,将不需要身份验证的操作放在另一个控制器中。然后把 auth 放到构造函数中。
-
@AlexHowansky 我可以使用
__construct()在一行中调用该代码。另一个问题并非所有方法都需要该代码。嗯..也许我会等其他人,如果他们有这个想法。否则我会做你的建议。不过感谢您的建议。
标签: php laravel laravel-5 laravel-6