Yii для чайников \Yii for dummies (связанные списки dropDownList)

интересно это что какая то секретная информация. толком ниче найти не могу.
вот сделал по
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', 'выберите предка'), ) );

Популярные сообщения из этого блога

Пишем логи на C# (.NET). Легкий способ.

Средства для работы с базой данный PostgreSql

Авторизация yii 2 из базы