2015-10-07 6 views
2

Я использую следующую проверку для моей формы в Laravel:Ошибка при попытке расширить валидатор в Laravel

public function isValid($data, $rules) 
    { 
     $validation = Validator::make($data, $rules); 

     if($validation->passes()){ 
      return true; 
     } 

     $this->messages = $validation->messages(); 

     return false; 
    } 

Правила, передаваемое ему проста:

$rules = [ 
      'name' => 'required', 
      'type' => 'required' 
     ]; 

И $data является входные данные. Теперь мне нужно добавить к нему специальное расширение для проверки, в частности, чтобы убедиться, что значение поля ввода round2 больше значения поля ввода round1. Глядя на документы, я пробовал следующий синтаксис, который, я думаю, должен быть правильным, но я продолжаю получать ошибку.

 $validation->extend('manual_capture', function($attribute, $value, $parameters) 
     { 
      return $value > $parameters[0]; 
     }); 

Тогда я мог бы назвать это с $attribute = 'round1', $value = $data['round1'] и $parameters = [$data['round2']].

Ошибка Method [extend] does not exist. - Я не уверен, что мое понимание всей этой концепции верное, так может кто-то сказать мне, как заставить его работать? В этом документе всего около 2 абзацев.

+0

Посмотрите на http://laravel.com/ api/5.1/Illuminate/Validation/Validator.html # method_addExtension – chba

+0

@chba Это Laravel 4.2 ... а также я прошел через документы, я не понимаю, почему мой путь не должен работать. – jovan

ответ

2

Поместите следующее в вашем route.php

Validator::extend('manual_capture', function($attribute, $value, $parameters) 
{ 
    return $value > $parameters[0]; 
}); 

Дополнительная документация here

Затем используйте его следующим образом:

$rules = [ 'foo' => 'manual_capture:30']; 
+0

Я знаю, но как мне привязать это к переменной '$ validation'? Это настоящая проблема. Когда я делаю это так, ошибки нет, но он также не подтверждает отношение round1/round2. – jovan

+0

Вы имеете в виду, как его использовать? – Mithredate

+0

Да, я полагаю, все сводится к этому. Я смотрю на документы, но не вижу, как добавить это настраиваемое правило к существующей '$ validation'. – jovan

Смежные вопросы