Yii Framework Forum: валидация checkbox - Yii Framework Forum

Jump to content

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

валидация checkbox Rate Topic: -----

#1 User is offline   carat 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 60
  • Joined: 12-February 09

Posted 15 April 2009 - 09:34 AM

значение checkbox value="true" , "on", "yes", "1" и т.д.
это значение передается только когда статус checked.
как корректно определить правила валидации, типа
если есть "true", отсутствует "false", "on"->"off" и т.д. ?
0

#2 User is offline   creocoder 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 198
  • Joined: 09-March 09
  • Location:*.php

Posted 15 April 2009 - 05:16 PM

Задачей валидации здесь вообще и не пахнет.

Если уж так нужен подобный функционал, то можно определить свойство $checkbox в модели и написать метод getCheckBoxStatus() в той же модели. Метод нужно реализовать таким образом, что он будет возвращать заданные в нем значения в зависимости от состояния свойства. Напрямую к методу обращаться не обязательно, архитектура Yii построена так, что будет работать конструкция $status=$model->checkBoxStatus

P.S. Могу написать пример кода модели, но думаю, что стоит вообще пересмотреть этот злосчастный checkbox, потому что скорее всего такой функционал для него был бы "оверкодингом" и задача в контексте которой используется этот элемент управления на самом деле решается проще.
0

#3 User is offline   Zolter 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 377
  • Joined: 26-March 09

Posted 16 April 2009 - 02:12 AM

Пишите валидацию отдельной функцией
0

#4 User is offline   carat 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 60
  • Joined: 12-February 09

Posted 16 April 2009 - 04:35 AM

проблема с checkbox в том что если он checked,
то форма посылает значение value. в противном
случае checkbox игнорируется в меттоде POST.
т.е. что бы донести снятый флажек до базы, надо
отавливать это программно.
но в функции модели rules встречал такую
конструкцию:
[tt]array('is_active','in','range'=>array('on','off'))[/tt]
тема правил документирована слабо. вот и затаилась
надежда , что может быть можно как нить прописать
правило.
ну а пока делаю программно.
0

#5 User is offline   creocoder 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 198
  • Joined: 09-March 09
  • Location:*.php

Posted 16 April 2009 - 01:08 PM

Позволю себе повториться, валидацией вы эту проблему не решите.
Вот реализвация предложенного мной варианта.


class Model extends CActiveRecord
{
    function getCheckBoxStatus()
    {
        return isset($this->checkbox); //checkbox это то поле которое вас интересует
    }
}


Все, теперь вне зависимости от того что передается в $_POST, вызов $model->checkBoxStatus даст вам то что нужно.

P.S. Хотя на мой взгляд тут вообще никакой проблемы не существует. Если задача обстоит именно таким образом, то пусть база пишет автоматически значение по умолчанию для этого поля, если checkbox не отмечен.
0

#6 User is offline   carat 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 60
  • Joined: 12-February 09

Posted 17 April 2009 - 05:16 AM

Quote

P.S. Хотя на мой взгляд тут вообще никакой проблемы не существует. Если задача обстоит именно таким образом, то пусть база пишет автоматически значение по умолчанию для этого поля, если checkbox не отмечен.


в том то и дело что база пишет, но только на insert.
а ежели надо апдейтить? воопчим пока делаю так:
http://www.yiiframew...39.html#msg6539
0

#7 User is offline   creocoder 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 198
  • Joined: 09-March 09
  • Location:*.php

Posted 17 April 2009 - 10:15 PM

А что реализация метода getCheckBoxStatus() в модели не вариант? А в базу при вставках и обновлениях можно будет писать $model->checkBoxStatus, который и будет true или false, если нужно то можно и так (int) $model->checkBoxStatus
0

#8 User is offline   carat 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 60
  • Joined: 12-February 09

Posted 18 April 2009 - 05:16 AM

Quote

А что реализация метода getCheckBoxStatus() в модели не вариант?

вариант и довольно изящный, но на форме 4 checkbox(a), + надо "парсить"
и другие поля (htmlspecialchars()).  в моем случае все собрано в 1-у кучу
и работает для экшанов "add" и "edit", т.е. при myModel->save();
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