Laravel 4 - 无法添加到留言包?

时间:2014-08-26 09:00:24

标签: php laravel laravel-4

这可能是因为我做错了什么并且改变了一些东西但是错误在我添加错误消息以进行验证的每个地方都显得很突出。这是一个例子:

$validator = Validator::make(Input::all(), $rules, $messages);
$messages = $validator->errors();
$operation = Operation::find(Input::get('operation_id'));
if($operation->membersNeeded()<Input::get('max')){
    $error=1;
    $messages->add('limit', 'You can only have '.$operation->membersNeeded().' more hostesses on this operation');
}

给我以下错误:

 Symfony \ Component \ Debug \ Exception \ FatalErrorException

 Call to a member function add() on a non-object

选择的行将是y使用add()添加我的错误消息的位置。这工作正常,我正在编辑网站的其他部分,现在突然它不起作用。这让我很困惑。

1 个答案:

答案 0 :(得分:6)

可能更安全地实例化您自己的MessageBag并将它们与验证器合并,以确保在验证通过时它不会返回NULL。

请注意,我正在将您的$messages重命名为$errorMessages,因为您使用相同的变量名称来显示自定义验证消息和错误消息。

$validator = Validator::make(Input::all(), $rules, $messages);

// New MessageBag
$errorMessages = new Illuminate\Support\MessageBag;

// Check if there is actually any errors
if ($validator->fails()) {
    $errorMessages->merge($validator->errors()->toArray());
}

// The rest of your custom validation
$operation = Operation::find(Input::get('operation_id'));
if($operation->membersNeeded()<Input::get('max')){
    $error=1;
    $errorMessages->add('limit', 'You can only have '.$operation->membersNeeded().' more hostesses on this operation');
}