【发布时间】:2017-06-01 09:10:30
【问题描述】:
我有一个客户要求如下:
<textarea name="intro[en]"></textarea>
<textarea name="intro[fr]"></textarea>
<textarea name="intro[de]"></textarea>
我正在使用自定义请求对其进行验证:
class UpdateProfileRequest extends Request
{
public function authorize()
{
return true;
}
public function rules()
{
return [
'intro.*' => 'required|max:100'
];
}
}
验证器不工作。我认为这是因为 .* 仅适用于编号数组,而不适用于关联数组?
我不知道该怎么做。
有没有办法通过这样的自定义请求来做到这一点?如果是,语法是什么?
否则,我该怎么办。我已经在控制器方法中编写了一些自定义代码,如下所示:
$hasIntro = false;
$hasBio = false;
foreach($request->get('intro') as $language => $localIntro)
{
if(!empty($request->get('intro')[$language]))
{
$hasIntro = true;
}
}
if(!$hasIntro or !$hasBio)
{
return redirect()->back()->withErrors('You must enter at least 1 Bio and 1 Intro');
}
我认为这可能是解决此问题的一种手动方式。虽然我相信 withErrors 需要一个验证器,所以我又回到了同样的问题......虽然也许有办法手动做到这一点?
我理想的解决方案是找到关联数组语法,如果确实存在的话?
【问题讨论】:
-
在规则中使用 foreach 循环
标签: php arrays laravel validation laravel-5.2