如果在 Laravel 中则需要

required if in Laravel

我在 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',
          ]
}

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

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

试试下面的代码

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 包裹在 '' 单引号中!

我按照自己的规则解决了,如下:

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,
       ]