laravel 4返回验证消息错误

时间:2013-06-16 14:36:38

标签: php validation laravel

我目前正在测试laravel 4,但是我有一个问题,在laravel文档中返回错误消息以这种方式描述$messages->first('email');应该返回消息,但不管是什么方法尝试{{1我收到错误

我的cobtroller

messages

{ “错误”:public function postSignup() { $rules = array( 'display_name' => 'required|unique:users', ); $messages = array( 'display_name.required' => 'Felhasználónév kötelező', 'display_name.unique' => 'Ez a Felhasználónév foglalt', ); $val = Validator::make(Input::all(), $rules, $messages); if ($val->passes()) { $data = array('msg' => 'yay'); } else { print_r($messages->first('display_name')); } return Response::json($data); }

如果我尝试使用{"type":"Symfony\\Component\\Debug\\Exception\\FatalErrorException","message":"Call to a member function first() on a non-object"仅用于测试print_r($ messages-> all());我得到以下

all

可以取悦有人指出我做错了吗?

3 个答案:

答案 0 :(得分:3)

你可以试试这个

if ($val->passes()) 
{
    $data = array('msg' => 'yay');
}
else
{
    $messages = $validator->messages();
    $data = array('msg' => $messages->first('display_name'));
}
return Response::json($data);
print_r(...);中的

controller会在模板外打印输出。在客户端,您可以查看msg之类的内容(例如,使用jQuery

$.get('url', function(data){
    if(data.msg == 'yay')
    {
        // success
    }
    else
    {
        // failed, so data.msg contains the first error message
    }
});

答案 1 :(得分:0)

Validator :: make方法只接受两个参数。

答案 2 :(得分:0)

您正在访问传递给验证程序的消息数组,而不是验证程序创建的错误消息。将您的代码更改为:

$val->messages()->first('email')

注意:validator :: make方法接受3个参数:

/**
 * Create a new Validator instance.
 *
 * @param  array  $data
 * @param  array  $rules
 * @param  array  $messages
 * @return \Illuminate\Validation\Validator
 */
public function make(array $data, array $rules, array $messages = array())