Yii Framework Forum: Помогите С Валидацией - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Помогите С Валидацией Rate Topic: -----

#1 User is offline   wolfgan 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 18
  • Joined: 05-June 11

Posted 01 November 2012 - 08:49 PM

Ситуация следующая. У меня в ТБД есть два поля. Первое - body, второе - marked_body. В первое поле пишутся данные с markdown разметкой, которые прогоняются по функции htmlspecialchars, объявленной в rules таким образом
array('body','filter','filter'=>'htmlspecialchars'),

В поле marked_body я пишу данные из $_POST['body'], которые также прогоняю в экшене через htmlspecialchars а потом через метод transform() класса CMarkdownParser. Т.е. храню во втором поле разметку которую и отображаю потом. Но, что меня не устраивает, так это то, что и htmlspecialchars и transform я выполняю в экшене, а хотелось бы реализовать все так, чтоб сама модель выполняла эти действия, но увы, не могу понять как правильно прописать функцию-валидатор, которую потом и вызвать из rules.

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

Пожалуйста дайте примеры, если можно, то приближенные к моей задаче.

Заранее благодарю всех. Расчитываю на помощь.
0

#2 User is offline   lancecoder 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 24
  • Joined: 13-July 12

Posted 02 November 2012 - 02:38 AM

ну вообще валидацаия должна либо "одобрить", либо "отвергнуть", а у вас скорее фильтр, вы можете в beforeSave, если юзаете ар проделать все манипуляции, либо:
'body', 'myFunction', 'param'=>array(0,1)

function myFunction ($attribute, $param){
$body=$this->{$attribute}
if (isset($param[0]))$body=intval($body);
if (isset($param[1]))$body=(bool)$body;
$this->{$attribute}=$body;
}
примерно так, с доп проверками конечно и прочим, например $param is_array и т.д.
0

#3 User is offline   wolfgan 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 18
  • Joined: 05-June 11

Posted 02 November 2012 - 04:27 AM

Спасибо.

Можно немного детализации? В функции attribute - это поле которое валидируется? А param - это просто флаги, указывающие, что именно в функции следует выполнить? Это единственое применение праметров, или могут быть другие варианты использования?

Извините за глупые вопросы, но сколько документацию не перечитываю - этот момент, т.е. все что связано с валидацией, уяснить не могу.
0

#4 User is offline   lancecoder 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 24
  • Joined: 13-July 12

Posted 02 November 2012 - 04:30 AM

параметры передаете любые, это я как пример показал
0

#5 User is offline   lancecoder 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 24
  • Joined: 13-July 12

Posted 02 November 2012 - 04:30 AM

и помоему там будет $param['param']==array(0,1)
0

#6 User is offline   wolfgan 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 18
  • Joined: 05-June 11

Posted 02 November 2012 - 04:35 AM

Спасибо. Вроде как начало что-то проясняться.
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users