Чтобы добавить новую проверку в Laravel, я сделал следующее:
сделал новый файл под названием customValidation.php
в app/start/
а затем включил его в app/start/global.php
и протестировал его с помощью echo()
и он сработал. Теперь он загружается в приложение.
Затем я написал следующий код для проверки флажков в Laravel:
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ class customValidate extends Illuminate\Validation\Validator { public function validateCheckbox($attribute, $value, $parameters) { //if(isset($value)) { return true; } else { return true; } echo "this is the: " . $value; } } /** * Resolvers for Custom Validations */ Validator::resolver(function($translator, $data, $rules, $message){ return new customValidate($translator, $data, $rules, $message); });
Однако в моих правилах проверки я определяю:
`array('sex'=>'checkbox')`
Но это не работает. Ничего не произошло. Ошибка не возникает. Приложение ведет себя так, как будто оно вообще не выполнило эту функцию. Кроме того, когда я повторяю что-то изнутри функции, ничего не получает эхо, еще одно доказательство того, что функция вообще не называется.
Тогда я создавал бы собственную папку для app/validators
.
1, Создать app/validators/CustomValidate.php
<?php class CustomValidate extends Illuminate\Validation\Validator { public function validateCheckbox($attribute, $value, $parameters) { echo "this is the: " . $value; } }
2, запустите php artisan optimize
или composer dumpautoload
3, Где-то зарегистрируйте свой пользовательский валидатор. Возможно, добавьте app/validators.php
start/global.php
в start/global.php
Validator::resolver(function($translator, $data, $rules, $message){ return new CustomValidate($translator, $data, $rules, $message); });
4, Подтвердить
$rules = ['agreed' => 'checkbox']; $data = ['agreed' => 0]; $v = Validator::make($data, $rules); dd($v->passes());
При отправке формы радиостанции не были установлены в их начальных состояниях, и это заставило Laravel не искать валидатор элемента. Таким образом, для этого нет обходного пути. Что я сделал, я просто добавил начальное состояние в радиоприемники, и они работали.
Многое, как сказал Андрейко