Изменение стандартных предупреждений о незаполненых полях формы
-
- Сообщения: 241
- Зарегистрирован: 2014.12.06, 00:06
Изменение стандартных предупреждений о незаполненых полях формы
Если в модели некоторые переменные указать как required, то в случае если он не заполнены во время отсылания формы, Yii предупреждает пользователя о том что запись не будет добавлена пока данный пункт не будет заполнен.
На любое поле выходит стандартное предупреждение с именем ячейки.
"Ячейка такаято не заполнена".
Можно ли както для одной конкретной ячейки выводить другой текст ? Если да то как это реализовать ?
На любое поле выходит стандартное предупреждение с именем ячейки.
"Ячейка такаято не заполнена".
Можно ли както для одной конкретной ячейки выводить другой текст ? Если да то как это реализовать ?
-
- Сообщения: 241
- Зарегистрирован: 2014.12.06, 00:06
Re: Изменение стандартных предупреждений о незаполненых полях формы
И попутно какбы еще этому тексту добавить мультиязычность ?
Re: Изменение стандартных предупреждений о незаполненых полях формы
Код: Выделить всё
public function rules()
{
return [
[['uid', 'title', 'body'], 'required'],
[['title'], 'required', 'message'=>Yii::t('app', 'This field is required')],
];
}
Re: Изменение стандартных предупреждений о незаполненых полях формы
Переопределить сообщение для конкретного поля можно путем замены 'message'. Это свойство есть в каждом валидаторе.
https://github.com/yiisoft/yii2/blob/ma ... r.php#L100
Заметьте, что для некоторых валидаторов таких сообщений может быть больше (например, для integer при задании min и max - число слишком мало, число слишком велико и т.п.).
Такая замена, разумеется, будет уже не мультиязычна.
Про интернационализацию почитайте тут:
http://www.yiiframework.com/doc-2.0/gui ... -i18n.html
или в соответствующей русской ветке документации на гитхабе.
Кроме этого, в сообщение в большинстве случаев передаются некоторые параметры, например, {attribute} и {value}.
https://github.com/yiisoft/yii2/blob/ma ... r.php#L100
Заметьте, что для некоторых валидаторов таких сообщений может быть больше (например, для integer при задании min и max - число слишком мало, число слишком велико и т.п.).
Такая замена, разумеется, будет уже не мультиязычна.
Про интернационализацию почитайте тут:
http://www.yiiframework.com/doc-2.0/gui ... -i18n.html
или в соответствующей русской ветке документации на гитхабе.
Кроме этого, в сообщение в большинстве случаев передаются некоторые параметры, например, {attribute} и {value}.
Мой профиль на Github
Re: Изменение стандартных предупреждений о незаполненых полях формы
когда добавляете в модели валидаторы, у каждого валидатора есть атрибут message - туда вписываете свой текст. Соответственно в мультиязычном формате.phpstarter писал(а):Если в модели некоторые переменные указать как required, то в случае если он не заполнены во время отсылания формы, Yii предупреждает пользователя о том что запись не будет добавлена пока данный пункт не будет заполнен.
На любое поле выходит стандартное предупреждение с именем ячейки.
"Ячейка такаято не заполнена".
Можно ли както для одной конкретной ячейки выводить другой текст ? Если да то как это реализовать ?
-
- Сообщения: 241
- Зарегистрирован: 2014.12.06, 00:06
Re: Изменение стандартных предупреждений о незаполненых полях формы
просто текст переводить путем я умею.
Имею свою папку со своим языком.
Но там нет defaultной папки, а yii всеравно откудато ведь печатает данные сообщения ?
посмотрел по vendor/yiisoft/messages - там тоже папки en нету.
В конфиге у меня следующее прописано
Гдебы могла хранится папка en с default-ными текстами ?
Код: Выделить всё
echo \Yii::t('app', 'I am a message!');
Имею свою папку со своим языком.
Но там нет defaultной папки, а yii всеравно откудато ведь печатает данные сообщения ?
посмотрел по vendor/yiisoft/messages - там тоже папки en нету.
В конфиге у меня следующее прописано
Код: Выделить всё
'db' => require(__DIR__ . '/db.php'),
'i18n' => [
'translations' => [
'app*' => [
'class' => 'yii\i18n\PhpMessageSource',
'sourceLanguage' => 'en',
'fileMap' => [
'app' => 'app.php',
'app/error' => 'error.php',
],
],
],
],
Re: Изменение стандартных предупреждений о незаполненых полях формы
https://github.com/yiisoft/yii2/blob/ma ... or.php#L46phpstarter писал(а):просто текст переводить путемя умею.Код: Выделить всё
echo \Yii::t('app', 'I am a message!');
Имею свою папку со своим языком.
Но там нет defaultной папки, а yii всеравно откудато ведь печатает данные сообщения ?
посмотрел по vendor/yiisoft/messages - там тоже папки en нету.
В конфиге у меня следующее прописаноГдебы могла хранится папка en с default-ными текстами ?Код: Выделить всё
'db' => require(__DIR__ . '/db.php'), 'i18n' => [ 'translations' => [ 'app*' => [ 'class' => 'yii\i18n\PhpMessageSource', 'sourceLanguage' => 'en', 'fileMap' => [ 'app' => 'app.php', 'app/error' => 'error.php', ], ], ], ],
-
- Сообщения: 241
- Зарегистрирован: 2014.12.06, 00:06
Re: Изменение стандартных предупреждений о незаполненых полях формы
Спасибо, потихоньку переварил все.
Мои мысли.
Значит надо в модели указать валидатор нового типа скажем
Соотвественно скопировать файл RequiredValidator.php под именем Required_2Validator.php
В нем вместо
прописать нужный мне текст. При этом мультиязычность не пострадает, так как соотвествующий перевод у себя в message папке я добавлю.
Вопрос только как дальше привязать новый валидатор и этот его новый файл к самому ядру yii ?
Мои мысли.
Значит надо в модели указать валидатор нового типа скажем
Код: Выделить всё
"requiered_2"
В нем вместо
Код: Выделить всё
Yii::t('yii', '{attribute} cannot be blank.')
Вопрос только как дальше привязать новый валидатор и этот его новый файл к самому ядру yii ?
Re: Изменение стандартных предупреждений о незаполненых полях формы
вы выборочно читаете. Я выше написал, что при прописывании правила валидации можно указать свой message взамен дефолтного из валидатораphpstarter писал(а):Спасибо, потихоньку переварил все.
Мои мысли.
Значит надо в модели указать валидатор нового типа скажемСоотвественно скопировать файл RequiredValidator.php под именем Required_2Validator.phpКод: Выделить всё
"requiered_2"
В нем вместопрописать нужный мне текст. При этом мультиязычность не пострадает, так как соотвествующий перевод у себя в message папке я добавлю.Код: Выделить всё
Yii::t('yii', '{attribute} cannot be blank.')
Вопрос только как дальше привязать новый валидатор и этот его новый файл к самому ядру yii ?
-
- Сообщения: 241
- Зарегистрирован: 2014.12.06, 00:06
Re: Изменение стандартных предупреждений о незаполненых полях формы
Извините, просто я не совсем понял как это осуществить.
Ок я в модели добавляю required_2.
файл Required_2Validator.php мне не нужно создавать ?
Как добавить в yii данный новый валидатор и если он добавится в каком месте будет хранится его message.
Еще раз прошу простить но может быть самые простые вещи для вас, могут быть слегка запутанными для новичков как я. Поэтому просьба не сердиться.
Ок я в модели добавляю required_2.
файл Required_2Validator.php мне не нужно создавать ?
Как добавить в yii данный новый валидатор и если он добавится в каком месте будет хранится его message.
Еще раз прошу простить но может быть самые простые вещи для вас, могут быть слегка запутанными для новичков как я. Поэтому просьба не сердиться.
Re: Изменение стандартных предупреждений о незаполненых полях формы
не надо создавать свой валидатор, используйте стандартные.phpstarter писал(а):Извините, просто я не совсем понял как это осуществить.
Ок я в модели добавляю required_2.
файл Required_2Validator.php мне не нужно создавать ?
Как добавить в yii данный новый валидатор и если он добавится в каком месте будет хранится его message.
Еще раз прошу простить но может быть самые простые вещи для вас, могут быть слегка запутанными для новичков как я. Поэтому просьба не сердиться.
-
- Сообщения: 241
- Зарегистрирован: 2014.12.06, 00:06
Re: Изменение стандартных предупреждений о незаполненых полях формы
Тоесть прямо в файле RequiredValidator.php
Сюда подкинуть свое условие.
Если я Вас правильно понял , подскажите только что прописать вместо ?
Код: Выделить всё
public function init()
{
parent::init();
if ($this->message === null) {
$this->message = Yii::t('yii', '{attribute} must be either "{true}" or "{false}".');
}
}
Код: Выделить всё
public function init()
{
parent::init();
if ($this->message === null) {
if (атрибут == спецАтрибут) {
$this->message = Yii::t('yii', '{attribute} BLABLABLA "{true}" or "{false}".');
}
else {
$this->message = Yii::t('yii', '{attribute} must be either "{true}" or "{false}".');
}
}
}
Код: Выделить всё
if (атрибут == спецАтрибут) {
-
- Сообщения: 241
- Зарегистрирован: 2014.12.06, 00:06
Re: Изменение стандартных предупреждений о незаполненых полях формы
Блин все было намного проще чем я думал. Большое спасибо !!!
Re: Изменение стандартных предупреждений о незаполненых полях формы
начнем сначала: для чего вам валидатор? что вы им делаете?phpstarter писал(а):Тоесть прямо в файле RequiredValidator.php
Сюда подкинуть свое условие.Код: Выделить всё
public function init() { parent::init(); if ($this->message === null) { $this->message = Yii::t('yii', '{attribute} must be either "{true}" or "{false}".'); } }
Если я Вас правильно понял , подскажите только что прописать вместоКод: Выделить всё
public function init() { parent::init(); if ($this->message === null) { if (атрибут == спецАтрибут) { $this->message = Yii::t('yii', '{attribute} BLABLABLA "{true}" or "{false}".'); } else { $this->message = Yii::t('yii', '{attribute} must be either "{true}" or "{false}".'); } } }
?Код: Выделить всё
if (атрибут == спецАтрибут) {
Re: Изменение стандартных предупреждений о незаполненых полях формы
ну вот - это я вам и писал несколько раз.phpstarter писал(а):Блин все было намного проще чем я думал. Большое спасибо !!!
-
- Сообщения: 241
- Зарегистрирован: 2014.12.06, 00:06
Re: Изменение стандартных предупреждений о незаполненых полях формы
Извините просто сразу не допер А тут как говорится носом ткнули и сразу все прояснилось