php - Laravel 表单数组验证

标签 php forms laravel validation

我需要一些帮助来使用 Laravel 5.4 验证我的表单。

我的表格:

{{Form::bsText('general[firstname]')}} 
{{Form::bsText('general[lastname]')}}

然后我有一个使用以下规则进行验证的 RequestObject:

'general[firstname]' => 'required|string:max:255',
'general[lastname]' => 'required|string:max:255',

通过这种方式,当它不像预期的那样为空时,它会生成错误“required”。 虽然当我填写一个字符串时,它仍然会给出所需的错误消息。

我还尝试了 laravel 文档中的以下内容:

'general.firstname' => 'required|string:max:255',
'general.lastname' => 'required|string:max:255',

和:

'general.*.firstname' => 'required|string:max:255',
'general.*.lastname' => 'required|string:max:255',

以上两个都不报错。

根据要求,这是我的完整请求对象:

/**
 * Determine if the user is authorized to make this request.
 *
 * @return bool
 */
public function authorize()
{
    $user = Auth::user();

    return ($user && $user->isProjectManager()) ||
            ($user && $user->isAdmin());
}

/**
 * Get the validation rules that apply to the request.
 *
 * @return array
 */
public function rules()
{
    switch($this->method()){
        case 'GET':
        case 'DELETE':
            return [];
        case 'POST':
            return [
                'name' => 'required|string|max:255',
                'email' => 'required|string|email|max:255|unique:users',
                'role' => 'in:2,3,4,5,6,7',
                'password' => 'required|string|min:6|confirmed',
                'project_manager_gegevens_photo' => 'required_if:role,2|mimes:png,jpeg,gif',
                'general[voornaam]' => 'required|alpha:max:255',
                'general[achternaam]' => 'required|string:max:255',
                'general[date]' => 'required_if:role,3,4,5|date|after:today',
                'general[telefoonnummer]' => 'required_if:role,3,4,5',
                'general[interne_medewerker]' => 'boolean',
                'general[geslacht]' => 'in:m,v,o',
            ];
        case 'PUT':
        case 'PATCH':
            return [
                'name' => 'required|string|max:255',
                'password' => 'required|string|min:6|confirmed',
            ];
        default:return [];
    }
}

证明它与数组验证有关: 当我将名称更改为:

{{Form::bsText('general_firstname')}} 

'general_firstname' => 'required|string:max:255'

它的验证就像您期望的那样。虽然,我喜欢干净和独立的东西,并且想要一个包含所有一般字段的数组。

那么,我怎样才能验证它是一个数组呢?

最佳答案

使用字母而不是字符串,

喜欢,

'general.firstname' => 'required|alpha|max:255'

替换这个,

'general[firstname]' => 'required|string:max:255',

引用文档, https://laravel.com/docs/5.4/validation#rule-alpha

关于php - Laravel 表单数组验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46541323/

相关文章:

forms - 在 CodeIgniter 上,如何仅使用正确的值重新填充表单?

laravel - HasManyThrough 具有一对多关系

php - 在命令行上运行 Artisan (Laravel) 时出现 fatal error

php - 查询仅选择仅具有单一状态的行

javascript - 如何从服务器端脚本读取 true/false 响应以将 true/false 返回给 jQuery 函数?

php - 使用 Zend_Db 进行读/写分割

php - 绑定(bind)变量的数量与 sql "IN"的 token 数量不匹配

javascript - AngularJS 中的 GetElementById

html - 无法向左浮动表单和图标

laravel - 如何检查一个记录是否附加到另一个记录?