странно что нет вкладки php+framework. была бы очень востребованна есть такая задача - записать битовую маску в базу. то есть имеем ротор, статор, мотор + - + запишется 101 при ротор, статор, мотор + + - запишется 110 думаю идея ясна. как это реализовать? дощел пока до такого Код (Text): <?php echo $form->checkBox($model,'estado', array('checked'=>'checked')); ?> но как это увязать с формой ввода? Код (Text): <div class="row"> <?php echo $form->labelEx($model,'m_complect'); ?> <?php echo $form->textField($model,'m_complect',array('size'=>11,'maxlength'=>11)); ?> <?php echo $form->error($model,'m_complect'); ?> </div>
ну возможно потому что у каждого фреймворка есть свой форум и поддержка где люди знают продукт о котором ведут речь, особенно учитывая что фреймворки постоянно развиваются. а здесь вам придется ожидать того кто хорошо знаком с yii.
Ну такой псевдо код Код (PHP): <?php class MyForm extends CFormModel { public $id; public $title; public $mask; public $checkbox1; public $checkbox2; public $checkbox3; public function rules() { return array( array('title, checkbox1, checkbox2, checkbox3', 'required'), ); } public function update() { $mask = $this->checkbox1.$this->checkbox2.$this->checkbox3; $mydata = Mydata::model()->updateByPk( $this->id, array('id'=>$this->id, 'title'=>$this->title, 'mask'=>$mask), 'id=:id', array(':id'=>$this->id), true ); return $mydata; } }
ба тот же yiiframework.ru умер\умирает. там активность полтора землекопа. а здесь сразу видна работа мысли. трабла в том что полей не 3, а 10 и может их число увеличиваться. думаю в сторону checkboxlist. в listdata вгружать данные из связанной таблицы. также из данныз базы 101010 указывать какие чекбоксы чекнуты. но вот как вбить в базу данные? думаю про hiddenText .= model->m_sector. поправьте как правильней и проще сделать
Делай в классе public $checkbox_list; там будет маска 0001 и тд, в отображении через foreach делай чекбоксы с именами mycheck[0], mycheck[1], mycheck[3] и тд (кол-во битов в маске), и этот массив проверяй своей функцией валидации и собирай опять в строку и пиши в базу.
А ты умеешь связывать через контролер, модель и отображение формы? Если да, то просто в шаблон передай маску и её с помощью array_chunk разбей по одному символу в массив и formeach <?php echo CHtml::activeCheckBox($model,'mybox[$key]'); ?>
не очень понятно о чем ты. тем более activeCheckBox вряд ли сканает. вот в listdata вгружать данные из связанной таблицы. но как обратно загружать?
Обратно делать update по уникальный ключу записи. Я о том что у тебя есть битовая маска переменной длины, ты её получаешь в переменную, во отображении превращаешь в чекбоксы с одним именем для организации массива по ключам, результат сохранить обратно в базу
Не знаю что это такое, без разницы что использовать Добавлено спустя 1 минуту 14 секунд: да попробуй использовать http://www.yiiframework.com/doc/api/1.1/CHtml#activeCheckBoxList-detail думаю будет легче
все ж круто получается Код (Text): $type_list=CHtml::listData(Department::model()->findAll(),'F_ID','F_Name'); (string) $buf_string = $model->m_complect; for ($i=0, $z=1;$i<strlen($buf_string); $i++, $z++) { if ($buf_string[$i] == 1) $arr_bit[] = $z; } echo CHtml::checkBoxList('Motor[m_complect][]', $arr_bit, $type_list); как сейчас узнать состояние чекбокса? понятно что в afterValidate. но как?
Ты же делаешь populate заполнение класса формы $model=new MyForm; $model->attributes=$_POST['MyForm'];
такое используется, если мало памяти или канала передачи. например, во встроенных устройствах. но в вебе просто геморрой. сначала с формами, потом с поиском, потом с миграцией. короче, сделай просто несколько доп. полей