【发布时间】:2016-06-21 22:46:49
【问题描述】:
我只需要知道如何验证我的复选框值数组是否位于某个值列表中。所以,我正在使用如下所示的“in:”验证规则,但它返回的错误是复选框的值无效。因为它是通过 AJAX 发送的值数组,所以我需要做一些不同的事情吗?
控制器:
if ($request->ajax())
{
/*Create record in UserType Model with the values from the Type checkboxes*/
$Type = Input::get('Type');
$this->validate($request, [
'Type' => 'required|in:A,B,C,D',
],[
'required' => 'You must select at least one.',
]);
foreach ($Type as $key => $value)
{
Auth::user()->userType()->create([
'profile_id' => Auth::user()->id,
'type' => $value,
]);
}
}
在我的表单中,我有以下输入...
<input type="checkbox" name="Type[]" value="A"/>
<input type="checkbox" name="Type[]" value="B"/>
<input type="checkbox" name="Type[]" value="C"/>
更新:
所以,我在 Laravel 文档中发现您可以使用 * 来验证数组以获取数组中的键/值。但是,在我的数组中它只是 Type[] 所以我尝试了以下没有运气。
$this->validate($request,[
'type.*' => 'required|in:A,B,C,D'
// or
'type*' => 'required|in:A,B,C,D'
]);
只是不工作。我知道我需要使用* 检索数组值。
更新:
当这个验证选项仅在 Laravel 5.2 中可用时,我正在运行 Laravel 5.1。解决了。
【问题讨论】:
-
找到解决办法了吗
-
还没来得及检查。我今晚会更新这个帖子。但是,我已经按照您的建议进行了操作,但没有正确验证。它不识别验证标准并允许提交表单。
-
如果你只使用
required?没有in。并且Type的拼写必须与表格中的完全相同(1. 字母大写) -
在“控制器”部分下的原始问题中。该验证适用于 required,但会在“in”条件下引发错误。发生的情况是验证正在抓取“类型”,因此所需的标准很好(只需选中一个框),但“输入”标准需要数组中的基础值,因此它认为我的值不是A、B、C、D。
-
我想我明白了!忘记
required
标签: laravel