使用Laravel 4验证时遇到问题。这是代码:
$validator = Validator::make(
array(
'surname' => ['Laravel'],
),
array(
'surname' => 'integer|alpha_dash'
)
);
$validator->passes();
var_dump($validator->failed());
它会导致错误:错误:preg_match()期望参数2为字符串,给定数组
假设姓氏来自用户,它可以是数组或字符串。
我有两个问题:
答案 0 :(得分:2)
我刚才做的测试数组:
按照您的方式创建了一些字段:
<input type="text" name="user[surname][0]">
<input type="text" name="user[surname][1]">
并验证了其中一个:
$validator = \Validator::make(
Input::all(),
array('user.surname.0' => 'required|min:5')
);
var_dump($validator->passes());
然后我只是手动完成:
$validator = \Validator::make(
array(
'user' => ['surname' => [ 0 => 'Laravel'] ],
),
array('user.surname.0' => 'required|min:5')
);
这对我来说都很有用。
如果您需要分析Laravel未提供的内容,您可以通过执行以下操作来扩展Validator:
Validator::extend('foo', function($attribute, $value, $parameters)
{
return $value == 'foo';
});
修改强>
但是,是的,如果你这样做,就会有一个错误:
$validator = \Validator::make(
array(
'user' => ['surname' => [ 0 => 'Laravel'] ],
),
array('user.surname.0' => 'integer|alpha_dash')
);
它会给你一个
"Error: preg_match() expects parameter 2 to be string, array given".
以下是OP发布的Laravel问题:https://github.com/laravel/laravel/issues/2457。