2013-03-17 1731 views
3

当试图实现Laravel的基于长度验证在我看来Laravel:表单验证字符串长度的错误信息导致的异常

'password' => array(
    'required', 
    'alpha_dash', 
    'Min:7' 
) 

和输出错误信息

{{ 
    $errors->first(
     'password', 
     '<span class="error">:message</span>' 
    ) 
}} 

我得到

Unhandled Exception 
Message: 
Array to string conversion 
Location: 
_avalog\laravel\messages.php on line 188 
Stack Trace: 
#0 _avalog\laravel\laravel.php(42): Laravel\Error::native(8, 'Array to string...', '_avalog...', 188) 
#1 [internal function]: Laravel\{closure}(8, 'Array to string...', '_avalog...', 188, Array) 
#2 _avalog\laravel\messages.php(188): str_replace(':message', Array, 'get('password', 'get() 

调试,它似乎是真的。如果我print_r($validation);

Laravel\Validator Object (
    [attributes] => Array (
     [username] => fred 
     [email] => 
     [password] => asd 
     [csrf_token] => DWg3CUfqtMZkIRfyZXNEqygvWUHsGS9SQMue2V4S 
    ) 
    [errors] => Laravel\Messages Object (
     [messages] => Array (
      [email] => Array (
       [0] => The email field is required. 
      ) 
      [password] => Array ( 
       [0] => Array (
        [numeric] => The password must be at least 7. 
        [file] => The password must be at least 7 kilobytes. 
        [string] => The password must be at least 7 characters. 
       ) 
      ) 
    ) 
    [format] => :message 
) 

你可以看到消息事实上确实包含密码的数组这似乎是取决于输入类型,即使我在规则中所指定它是alphadash

[password] => Array (
    [0] => Array (
     [numeric] => The password must be at least 7. 
     [file] => The password must be at least 7 kilobytes. 
     [string] => The password must be at least 7 characters. 
    ) 
) 

尽管劳逸结合,不要

[email] => Array (
    [0] => The email format is invalid. 
) 

看着Laravel框架中的,它没有任何处理这种基于数组的消息传递,所以我认为我在做到错误之前做了些什么,但我不知道是什么。

感谢您的帮助。

回答

11

您的规则条目是错误的。它必须像

'password' => 'required|alpha_dash|min:7' 

看那Laravel验证docs了解更多信息

+1

哇,现在我觉得愚蠢。我使用了pipe分隔的语法_several_ times无济于事,但似乎Min的大写M是原因。感谢您的帮助。这是一个耻辱,这些文件没有提到任何规则*必须*小写。 – domwrap 2013-03-18 03:18:42

+0

很高兴我帮助:)标记问题,如果它是如此:) – 2013-03-19 00:35:13

+1

@Hwulex不要担心,这不是你,我的团队中的每个人都有同样的问题,Laravel文档真的很糟糕,当涉及到这个! – Sliq 2016-04-05 12:40:42