我是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在进行验证之前没有解码字段。
我做错了什么?
答案 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
阅读这些可能有点帮助!