CakePHP-подобная проверка в FuelPHP - PullRequest
2 голосов
/ 19 мая 2011

Привет, ребята, наша компания планирует начать использовать FuelPHP в качестве основного фреймворка для разработки.

Лично я из CakePHP, и мне очень нравится, как Cake обрабатывает многие вещи, такие какпроверка - т. е. установите правила один раз в модели, и все будет работать вместе, чтобы соблюдать правила.

Перемещение в Fuel, однако, похоже, что у них другой подход к этому, где правила проверки должны бытьустановить в контроллере.Обратной стороной этого является большое количество повторяющихся кодов, т. Е. Даже если у вас есть только действия add и edit , это все равно два места, в которых вам нужно определить свои правила.

Из-за этого я надеялся, что кто-то сможет мне помочь и сообщить, возможно ли для модели справиться с проверкой?

Спасибо:)

1 Ответ

3 голосов
/ 19 мая 2011

Поскольку я был слишком занят в последнее время, к сожалению, я не удосужился документировать много.Существует несколько вариантов:

  1. Создайте set_form_fields () для использования с проверкой, что вы передаете экземпляр класса Fieldset и должны настроить все поля (включая проверку).Примером может быть , найденный здесь (хотя основан на устаревшей версии Fuel).Если у вас есть такой метод в вашей модели, вы можете использовать Validation::factory()->add_model('Model_Example') (правила также можно создавать внутри модели, добавьте к ним префикс _validation_, и вы можете использовать их при добавлении модели, как указано выше)

  2. Установите правила проверки в свойстве $_properties класса Orm \ Model и добавьте модель, как в 1. (Orm \ Model имеет встроенный метод set_form_fields ())

  3. Добавьте Orm \ Observer_Validation к свойству Orm \ Model $_observers, и проверка будет выполнена при сохранении вашей модели, и в случае ошибки выдается исключение ValidationFailed.Ошибки могут быть выбраны по имени класса из класса Validation после этого, например: когда экземпляр Model_Example не удалось сохранить из-за проверки, вы можете получить полный экземпляр проверки с помощью Validation::instance('Model_Example') или извлечь ошибки с помощью Validation::instance('Model_Example')->show_errors()

...