Добавить строку домена в сообщения проверки в моделях CakePHP - PullRequest
0 голосов
/ 20 марта 2012

Можно ли добавить строку домена в сообщения проверки в моделях CakePHP?Все мои сообщения локализованы с помощью __d():

echo __d('my_app_name', 'This is a regular message');

Но сообщения проверки в модели представляют собой простые строки или sprintf аргументы:

'my_field' => array(
  'my_rule' => array(
    'rule' => 'alphanumeric',
    'message' => 'Only letters and numbers allowed',
  )
)

'another_field' => array(
  'another_rule' => array(
    'rule' => 'alphanumeric',
    'message' => ('Only %s and %s allowed', 'letters', 'numbers'),
  )
)

Спасибо !!!

Ответы [ 2 ]

2 голосов
/ 20 марта 2012

Предполагается, что вы используете CakePHP 2.x:

Класс Cake Model имеет свойство validationDomain, вы можете просто добавить

public $validationDomain = "yourdomain";

к вашей модели, чтобы получить то, что вы хотите.

Информация от API:

ValidationDomain (строка)

Имя домена строки проверки, используемого при переводе ошибок проверки.

См. http://api20.cakephp.org/class/model

1 голос
/ 20 марта 2012

Рассматривали ли вы изменение свойства validationDomain для модели ?(Отредактировано: я только что заметил, что @Nappo предложил это)

Или, если это недостаточно гибко для вас, вы можете переопределить функцию invalidate() CakePhp в вашей модели следующим образом:

/**
 * Overrides Model.php's invalidate function
 */
public function invalidate($field, $value = true) {
  if (is_string($value)) {
    return parent::invalidate($field, __d('my_app_name', $value));
  }
  else {
    return parent::invalidate($field);
  }
}

Вы можете поместить это в свою AppModel или в конкретную модель, для которой вы хотите изменить сообщение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...