Laravel 4无法解码

时间:2014-08-11 12:38:46

标签: php laravel laravel-4

我是Laravel的新手,我遇到了一个我无法解决的问题。

我有一个使用Laravel 4.2制作的WebService。

此WS接收带有多个字段的POST请求,其中一个是EMAIL。

Payload(POST ENCTYPE multipart / form-data)

name=John&password=1234&email=email%40server.com&surname=Lopes

当我尝试验证时,它总是在EMAIL验证规则上失败,说明电子邮件无效。

模型规则:

public static $rules = [
    'name' => 'required|max:50',
    'surname' => 'max:100',
    'chatusername' => 'max:64',
    'photo' => 'max:245',
    'password' => 'required|max:64',
    'email' => 'required|email|max:245',
    'accesstoken' => 'max:64',
    'remember_token' => 'max:64'
];

在Webservice上

$validation = Validator::make(Input::all(), User::$rules);

如果我调试并打印此字段,我会收到电子邮件字段网址编码。

email%40server.com

因此,规则失败,因为laravel在进行验证之前没有解码字段。

我做错了什么?

2 个答案:

答案 0 :(得分:0)

正如Pelevet建议的那样,尝试将模型规则调整为:

public static $rules = array(
  'email'                 => 'required|email',
);

答案 1 :(得分:0)

  

application / x-www-form-urlencoded 默认。所有字符在发送之前都已编码   (空格转换为" +"符号,特殊   字符转换为ASCII HEX值)    multipart / form-data 不编码任何字符。使用具有文件上载控件的表单时,此值是必需的        text / plain 空格转换为" +"符号,但没有特殊字符编码

http://www.w3schools.com/tags/att_form_enctype.asp

阅读这些可能有点帮助!