在 Laravel 中将其他函数放在 FormRequest 上

洛伦佐·贝尔蒂

我正在构建一个 Laravel 6 应用程序,我关心“最佳实践”。我有一个名为 CustomerController 的控制器。在我的控制器中,我想更新 Customer 模型,所以我将有一个如下所示的函数。

public function update(UpdateCustomer $request, Customer $customer){
    //
}

UpdateCustomer 是我的表单请求,我将在这里进行验证。在我的 update() 方法中,我进行了经典验证。

public function rules()
{
    $validationArray = [];
    $validationArray['customer.name'] = 'string|required';
    $validationArray['customer.vat'] = 'string|required';
    $validationArray['customer.email'] = 'email|required';

    return $validationArray;
}

现在我必须做一些其他经典的特殊验证。假设我的模型中有更多数据,并且我不希望更改这些值。

例如,我有以下内容:address, cap, locality.我可以验证 UpdateCustomer 请求的第二种方法。

public function validateForDataCantChange()
{
    $data = $this->input("customer");
    $customer = $this->route("customerID");

    $validator = Validator::make([], []); // Empty data and rules fields
    $arrayDataThatCantChange = [
        'address' => $data['address'] ?? NULL,
        'cap' => $data['cap'] ?? NULL,
        'locality' => $data['locality'] ?? NULL
    ];

    foreach ($arrayDataThatCantChange as $key => $v) {
        if ($customer->{$key} !== $v) {
            $validator->errors()->add($key, __("messages.the field :field can't be changed", ['field' => $key]));
        }
    }

    if ($validator->errors()->any()) {
        throw new ValidationException($validator);
    }
}

然后在我的控制器中,我添加了以下内容。

public function update(UpdateCustomer $request, Customer $customer){
    $request->validateForDataCantChange();
}

这是一种不好的做法吗?我应该创建一个新的 FormRequest 吗?在这种情况下(两个表单请求),我如何对单个控制器使用两个不同的请求?

zider23

对于所需的一点努力,我会亲自创建一个新的表单请求。

如果您希望使用相同的表单请求,您可以执行以下操作:

public function rules() 
{
   $rules = [
    'title' => 'required:unique:posts'
   ];

   // when editing i.e. /posts/2/edit
   if ($id = $this->segment(2)) {
     $rules['title'] .= ",$id";
   }

   return $rules;
}

但是,我总是为每个动作使用一个单独的类。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Laravel 5.6 FormRequest 验证

来自分类Dev

单元测试Laravel的FormRequest

来自分类Dev

Laravel 中 FormRequest 的验证消息

来自分类Dev

带有变量的 Laravel FormRequest

来自分类Dev

在Laravel 5中将FormRequest日志记录放置在何处?

来自分类Dev

Laravel - 将 FormRequest 限制为某些参数

来自分类Dev

Laravel FormRequest 验证规则未按预期工作

来自分类Dev

Laravel 5 FormRequest自定义消息用于数组输入

来自分类Dev

formatErrors()的声明应与laravel中的FormRequest :: formatErrors兼容

来自分类Dev

Laravel 5 FormRequest自定义消息的数组文件字段

来自分类Dev

Laravel 7.2 Illuminate \ Foundation \ Http \ FormRequest中的奇怪行为

来自分类Dev

Laravel 7 FormRequest更新没有只读字段

来自分类Dev

Laravel 5 FormRequest自定义消息用于数组输入

来自分类Dev

在 Laravel 的 FormRequest 中使用复杂的条件验证规则

来自分类Dev

我想将其他文档中的多个段落放在文档中的占位符上

来自分类Dev

将其他对象放在类名称空间上是不好的做法吗?

来自分类Dev

在表单上创建其他验证注册默认的laravel

来自分类Dev

Laravel 急切加载与其他表上的连接

来自分类Dev

scrapy:在formrequest上禁用过滤是否有意义?

来自分类Dev

scrapy:在formrequest上禁用过滤是否有意义?

来自分类Dev

在node.js上的JS中将“大量”数据,数组/文件/其他地方放在哪里

来自分类Dev

重写FormRequest的failedValidation方法时,Laravel 6自定义验证错误``类不存在''

来自分类Dev

Laravel 5.8发送参数以授权方法FormRequest类

来自分类Dev

Laravel:在Laravel中联接表并在其他表上循环

来自分类Dev

在块函数Laravel 4上使用变量

来自分类Dev

Laravel调用非对象上的成员函数

来自分类Dev

调用数组 laravel 上的成员函数 getClientOriginalName()

来自分类Dev

将div放在其他内容上

来自分类Dev

如何将图像放在其他盒子上?

Related 相关文章

  1. 1

    Laravel 5.6 FormRequest 验证

  2. 2

    单元测试Laravel的FormRequest

  3. 3

    Laravel 中 FormRequest 的验证消息

  4. 4

    带有变量的 Laravel FormRequest

  5. 5

    在Laravel 5中将FormRequest日志记录放置在何处?

  6. 6

    Laravel - 将 FormRequest 限制为某些参数

  7. 7

    Laravel FormRequest 验证规则未按预期工作

  8. 8

    Laravel 5 FormRequest自定义消息用于数组输入

  9. 9

    formatErrors()的声明应与laravel中的FormRequest :: formatErrors兼容

  10. 10

    Laravel 5 FormRequest自定义消息的数组文件字段

  11. 11

    Laravel 7.2 Illuminate \ Foundation \ Http \ FormRequest中的奇怪行为

  12. 12

    Laravel 7 FormRequest更新没有只读字段

  13. 13

    Laravel 5 FormRequest自定义消息用于数组输入

  14. 14

    在 Laravel 的 FormRequest 中使用复杂的条件验证规则

  15. 15

    我想将其他文档中的多个段落放在文档中的占位符上

  16. 16

    将其他对象放在类名称空间上是不好的做法吗?

  17. 17

    在表单上创建其他验证注册默认的laravel

  18. 18

    Laravel 急切加载与其他表上的连接

  19. 19

    scrapy:在formrequest上禁用过滤是否有意义?

  20. 20

    scrapy:在formrequest上禁用过滤是否有意义?

  21. 21

    在node.js上的JS中将“大量”数据,数组/文件/其他地方放在哪里

  22. 22

    重写FormRequest的failedValidation方法时,Laravel 6自定义验证错误``类不存在''

  23. 23

    Laravel 5.8发送参数以授权方法FormRequest类

  24. 24

    Laravel:在Laravel中联接表并在其他表上循环

  25. 25

    在块函数Laravel 4上使用变量

  26. 26

    Laravel调用非对象上的成员函数

  27. 27

    调用数组 laravel 上的成员函数 getClientOriginalName()

  28. 28

    将div放在其他内容上

  29. 29

    如何将图像放在其他盒子上?

热门标签

归档