Недавно я экспериментировал с Laravel 4 и стараюсь, чтобы пользовательский класс проверки работал.
<?php class CountdownEventValidator extends Validator { public function validateNotFalse($attribute, $value, $parameters) { return $value != false; } public function validateTimezone($attribute, $value, $parameters) { return !empty(Timezones::$timezones[$value]); } }
protected $rules = [ 'title' => 'required', 'timezone' => 'timezone', 'date' => 'not_false', 'utc_date' => 'not_false' ];
$validation = CountdownEventValidator::make($this->attributes, $this->rules);
BadMethodCallException
- Переход с jQuery на JSON на PHP
- График X-оси Highcharts для разных диапазонов дат
- Как я могу остановить появление PHP-сообщений в WordPress?
- Проблема при расчете погодного отчета Google
- Kohana 3.2 - я хочу получить отличные даты
- Время ожидания SoapClient PHP
Метод [validateTimezone] не существует.
Я искал довольно много учебников, но не смог узнать, что не так с моим кодом.
спасибо за помощь
Максимум
Когда вы вызываете Validator::make
вы на самом деле вызываете Illuminate\Validation\Factory::make
хотя сам метод не статичен. Когда вы попадаете в класс Validator
вы проходите через фасад, а на заднем плане вызов выглядит примерно так.
App::make('validator')->make($this->attributes, $this->rules);
Затем он возвращает экземпляр Illuminate\Validation\Validator
.
Вы можете зарегистрировать свои собственные правила с помощью Validator::extend
или зарегистрировать свой собственный резольвер. Я рекомендую, на данный момент вы просто расширяете валидатор своими собственными правилами, используя Validator::extend
.
Validator::extend('not_false', function($attribute, $value, $parameters) { return $value != false; });
Вы можете прочитать больше об этом и о том, как зарегистрировать свой собственный резольвер в официальной документации .
Эта функция должна быть статической? Что делать, если вы удалите static
?
public function validateTimezone($attribute, $value, $parameters) { return !empty(Timezones::$timezones[$value]); }