Обратите внимание, что я использую CakePHP 1.3.Проверка длины в зависимости от настройки в CakePHP
Я хотел бы проверить длину нескольких полей модели в зависимости от ограничения, определенного администратором в базе данных.
У меня есть одна модель под названием Настройка, через которую я могу получить значения maxLength. Моя идея заключается в том, чтобы использовать метод beforeValidate за ними, а затем установите параметр VALIDATE $ соответственно:
<?php
class Mod extends AppModel
{
var $belongsTo = array('IBelong');
var $hasMany = array('IHaz');
function beforeValidate() {
// Fetch the maxLength settings : requestAction to the SettingsController ?
// Somehow do $this->Setting->find... ?
// Then set the $validate attribute
}
}
?>
Какой метод можно использовать, чтобы получить значения MAXLENGTH в обратном вызове beforeValidate?
Спасибо!
Edit: следующие комментарии Дэйв, вот что я сейчас делаю (и это работает):
<?php
class Mod extends AppModel
{
var $belongsTo = array('IBelong');
var $hasMany = array('IHaz');
function beforeValidate() {
App::import('Model', 'Setting');
$setting = new Setting();
// Use $setting->find... to fetch the settings
// Set the $validate attribute to validate using the settings
}
}
?>
Однако, я до сих пор не уверен, что это правильный подход.
Обратите внимание, что у меня есть несколько атрибутов для проверки, и мне бы хотелось избежать вызова $ setting-> find несколько раз для лучшей производительности.
Я видел этот пример на самом деле, но я задавался вопросом а) будет ли это вызов функции для каждого поля, когда я пытаюсь сохранить модель? Я хотел бы избежать создания 5 SQL-запросов, поэтому я хотел использовать beforeValidate. б) как я могу вызвать метод find модели установки из этого обратного вызова? – personne3000
Почему бы просто не сделать то, что вы написали в своем коде - $ this-> Setting-> find() Ничего плохого, если предположить, что параметр связан с Mod. Затем установите свои настройки в $ this-> data ['Setting'] [] или что-то еще. – Dave
Но что делать, если настройка не связана с Mod? Моя модель установки используется для хранения общих параметров для приложения, поэтому нет реальной семантической связи между установкой и модулем (с использованием ownTo или hasMany не имеет смысла) – personne3000