Yii для чайников \Yii for dummies (связанные списки dropDownList)
интересно это что какая то секретная информация. толком ниче найти не могу.
вот сделал по
www.yiiframework.com/wiki/24
первый список _form.php
экшн в контролере
второй список
вот сделал по
www.yiiframework.com/wiki/24
первый список _form.php
<?php $criteria = new CDbCriteria(); $criteria->addInCondition('id_parent', array('0')); $opts = CHtml::listData(Department::model()->findAll($criteria), 'F_ID', 'F_Name'); //создаем список из базы $result = Motor::model()->findByPk($model->m_id); //ищем есть ли в базе такие записи if (isset($result)) $result = Department::model()->find('F_Name=:myParams', array(':myParams' => $result->m_department)); //проверяем запись с таким именем if (isset($result)) $model->m_department = $result->F_ID; echo $form->dropDownList($model, 'm_department', $opts, array ( 'empty' => Yii::t('default', 'выберите цех'), 'ajax' => array ( 'type' => 'GET', 'url' => CController::createUrl('motor/getdep'), // взять данные из результата работы actionGetdep контроллера 'update' => '#Motor_m_sector', //будьте внимательны - обновляйте правильный селект 'data' => array ( 'm_department' => 'js:this.value', 'id_parent' => Department::model()->find('F_ID=:myParams', array(':myParams' => 10))->id_parent, // если редактируется запись - передадим текущее значение атрибута связанной модели ), ) ) ); ?>
экшн в контролере
// It will have to output the html to fill the second public function actionGetdep() { $id_parent = Yii::app()->request->getParam('id_parent'); $m_department = Yii::app()->request->getParam('m_department'); if ($id_parent !== null) { $criteria = new CDbCriteria(); $criteria->addInCondition('id_parent', array($m_department)); $data = Department::model()->findAll($criteria); $data = CHtml::listData($data, 'F_ID', 'F_Name'); if (is_array($data)) { foreach ($data as $value => $name) { echo CHtml::tag('option', array('value' => $value), CHtml::encode($name), true); } } } }//
//не забудьте добавить экшн в ролях
public function accessRules() { return array( array('allow', // allow all users to perform 'index' and 'view' actions 'actions'=>array('index','view','getdep'), 'users'=>array('*'), ),
второй список
<?php $crit = $model->m_department; $criteria = new CDbCriteria(); $criteria->addInCondition('id_parent', array($crit)); $opts = CHtml::listData(Department::model()->findAll($criteria), 'F_ID', 'F_Name'); $result = Department::model()->find('F_Name=:myParams', array(':myParams' => $model->m_sector)); if (isset($result)) $model->m_sector = $result->F_ID; echo $form->dropDownList($model, 'm_sector', $opts); ?>
///простой список $criteria = new CDbCriteria(); $criteria->addInCondition('handbook_h_id', array('0')); $opts = CHtml::listData(Handbook::model()->findAll($criteria), 'h_id', 'h_value'); echo $form->dropDownList($model, 'handbook_h_id', $opts, array ( 'empty' => Yii::t('default', 'выберите предка'), ) );
Комментарии
Отправить комментарий