如果在 Laravel 中则需要

Posted

技术标签:

【中文标题】如果在 Laravel 中则需要【英文标题】:required if in Laravel 【发布时间】:2019-06-29 00:58:57 【问题描述】:

我在 Laravel 验证中使用 required if,但它不起作用。我的错误是什么?

public function rules()

    if (!empty($this->game_id)) 
                $game = Game::find($this->game_id);
                $game_type = $game->type;
             else 
                $game_type = 'sport';
            

   return [
                'game_id' => 'required',
                'platform_id' => 'required_if:' . $game_type . ',==,electronic',
          ]

【问题讨论】:

请查看***.com/questions/37777265/… 您的字段名称game_type 似乎是动态的,请确保它是有效的输入名称 是的,它的价值是运动或电子。当game_type 等于electronic 时,我想要求它。 【参考方案1】:

你不需要整个表达式,正确的格式如下:

 return [
                'game_id' => 'required',
                'platform_id' => 'required_if:columnName:value',
          ];

【讨论】:

感谢您的回复。 columnName 来自另一个表。我如何在这个 columnName 中调用它? 您可能需要为此编写自己的验证器规则。 required_if 文档:laravel.com/docs/8.x/validation#rule-required-if【参考方案2】:

试试下面的代码

public function rules()

    if (!empty($this->game_id)) 
                $game = Game::find($this->game_id);
                $game_type = $game->type;
             else 
                $game_type = 'sport';
            

   return [
                'game_id' => 'required',
                'platform_id' => 'required_if: . $game_type . ,==,electronic',
          ]

required_if 的语法是 'field_name' => 'required_if:columnName:value'。你正在做的是将columnName 包裹在'' 单引号中!

【讨论】:

感谢您的回复。 columnName 来自另一个表。我如何在这个 columnName 中调用它? 你到底想做什么? 用户创建锦标赛。当他/她选择game_id时,我会从游戏表中检查它的typegame_type。如果game_idgame_type 等于electronic,则需要锦标赛表中的platform_id @ShokouhDareshiri 你试过我的代码了吗?我得到了你想要做的事情,但是这段代码可以试一试,让我知道。【参考方案3】:

我用自己的规则解决了它,如下所示:

if (!empty($this->game_id)) 

      $game = Game::find($this->game_id);
      $game_type = $game->type;

          if($game_type == 'electronic')
                  $required = 'required';
                 else
                    $required = ' ';
                

          

return [
         'game_id' => 'required',
         'platform_id' => $required,
       ]

【讨论】:

很高兴知道:)

以上是关于如果在 Laravel 中则需要的主要内容,如果未能解决你的问题,请参考以下文章

如果存在数组,则需要 Laravel 验证数组元素

php 如果验证,Laravel需要

如果字段为空需要另一个字段,Laravel 验证规则

Laravel 测试:如果需要检查多个级别,assertJsonFragment 会失败

Laravel 请求验证正则表达式,不需要

现有项目的 Laravel 火花?