从业务层检索的控制器的验证规则

雅各布·兰伯特

在构建控制器时,让验证规则来自注入的存储库是不好的做法吗?作为示例,请考虑以下接口:

interface UserRepository
{
  /**
   * @return array
   */
  public function getCreateRules();
}

然后可以在控制器的store方法中找到此功能的用法

class UserController extends Controller 
{
    private $repo;

    public function __construct(UserRepository $repo) 
    {
        $this->repo = $repo;
    }

    public function store(Request $request)
    {
        $this->validate($request, $this->repo->getCreateRules());

        ...
    }
}

我的问题是,是否通过将规则移至业务层来解决问题。这个想法来自2014年的这篇Medium帖子,所以我想知道,考虑到它的年龄,这是否是有效的资源。

读/写

我个人不会为此使用存储库,而是使用FormRequest

https://laravel.com/docs/5.4/validation#form-request-validation

这条路:

  1. 您的代码仍然可以重用
  2. 您无需创建任何附加逻辑,因为它们都是内置的
  3. 您可以使用类型提示将类解析出容器,容器将依次运行该类以自动处理方法的验证。

另外,如果您需要在创建和更新时使用不同的规则,则可以使用简单的switch语句,例如

public function rules()
{
    switch ($this->method()) {
        case 'GET':
            return [
                //Create rules
            ];
        case 'PUT':
        case 'PATCH':
            return [
                //Update rules
            ];
    }
}

您的store方法将如下所示:

public function store(UserRequest $request)
{
    //Validation will have already been handled by this point so you
    //don't need to add it manually
    ...
}

希望这可以帮助!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在哪里构建复杂的对象,业务层或控制器?

来自分类Dev

如何从业务逻辑层获取URL?

来自分类Dev

无法从业务层调用方法

来自分类Dev

ServiceNow:从业务规则启动异步脚本

来自分类Dev

业务层或控制器中的计算以查看特定于视图的信息

来自分类Dev

Laravel如何从视图函数添加到所述控制器(业务逻辑层)

来自分类Dev

如果我从控制器中取出逻辑,是否需要业务逻辑层?

来自分类Dev

在控制器或服务层中的Spring MVC中进行验证?

来自分类Dev

控制器与服务层之间的接口

来自分类Dev

控制器之间的验证

来自分类Dev

控制器之间的验证

来自分类Dev

通过在控制器中添加新数据来动态更新验证规则

来自分类Dev

CQRS-业务验证规则

来自分类Dev

检索控制器/动作数组

来自分类Dev

控制器无法检索记录

来自分类Dev

无法从控制器 AngularJS 检索数据

来自分类Dev

MVC中的验证规则和业务规则

来自分类Dev

MVC中的验证规则和业务规则

来自分类Dev

从业务规则引擎中排除 3 级之后的递归属性

来自分类Dev

Cakephp中的控制器验证

来自分类Dev

绕过控制器中的模型验证?

来自分类Dev

在控制器之前验证请求参数

来自分类Dev

从MVC控制器验证SignalR

来自分类Dev

Laravel控制器验证日期

来自分类Dev

Cakephp中的控制器验证

来自分类Dev

绕过控制器中的模型验证?

来自分类Dev

在控制器之前验证请求参数

来自分类Dev

Rails控制器索引渲染验证

来自分类Dev

控制器中的 Laravel 5 验证