如果在 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
时,我会从游戏表中检查它的type
为game_type
。如果game_id
的game_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 中则需要的主要内容,如果未能解决你的问题,请参考以下文章