2015-03-24 2 views
0

У меня есть CustomFormRequest, в котором я хочу использовать настраиваемое правило. Это метод rules() в FormRequest.Запросы формы с пользовательскими правилами

public function rules() 
{ 
    return [ 
      'name' => 'customrule' 
    ]; 
} 

Validorclass

class CustomValidator extends Illuminate\Validation\Validator{ 
protected function customrule($attribute, $value) { 
    return false; 
} 

У меня есть CustomServiceProvider с методом

public function boot() 
{ 
    \Validator::resolver(function($translator, $data, $rules, $messages) 
    { 
     return new CustomValidator($translator, $data, $rules, $messages); 
    }); 
} 

следующие загрузки() для CustomServiceProvider указан в файле app.php.

контроллер Шляпа с помощью СформироватьЗапрос

public function store(CustomFormRequest $request) 
{ 
    $input = $request->all(); 
    dd("request succeeded"); 

Это правило не распознается СформироватьЗапрос (или по крайней мере не выполняется), так как запрос всегда успешно. Как я могу это исправить?

+0

Вы можете сделать свою собственную привязку, чтобы зарегистрировать все новые пользовательские правила. Я описал все шаги здесь: http://stackoverflow.com/questions/28417977/custom-validator-in-laravel-5/28425173#28425173 – manix

+0

Я изменил свой код, чтобы реализовать ваше решение, но он не кажется work:/ – JorenV

+0

Если это не сработает, вам нужно показать нам ошибку – manix

ответ

1

Вы собираетесь создавать множество пользовательских правил? Если нет (я не считаю, что это хорошо подходит), вот что я использую. Не так красиво раствора, но это коротко и работает:

Внутри вашего файл запроса добавить следующее:

use Illuminate\Validation\Factory; 

class YourRequest extends Request { 
... 

    public function __construct(Factory $factory) 
    { 
     $factory->extendImplicit('customrule', function ($attribute, $value, $parameters) { 
      //$value is what the user typed in the form or what came from POST 
      // do some logic here, if the input is correct, return true else return false e.g.: 

      if($value == 'what_is_expected') 
      return true; 
      else 
      return false. 

     }, 
      'Custom rule failed error message!' 
    ); 
    } 
} 
+0

Это трюк. 'someBooleanFunction' использует функцию, созданную в CustomValidator (это обычное поведение?). Кажется немного странным, что использует эту функцию. – JorenV

+0

JorenV Я не понял, что вы сказали, что значит функция CustomValidator? Является ли someBooleanFunction реальной функцией? O.o – hfingler

+0

apparantly нет, кажется, я не понимаю, как это сделать. Я могу прокомментировать «return booleanfunction», и он все еще работает. – JorenV

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