2015-03-04 2 views
1

Попытка заполнить таблицу. Есть два зависимых поля (в первой таблице - «Отделы», во второй таблице - «Доктор». Данные для этих полей я также беру из двух разных таблиц). Фактически, когда я хочу выбрать «Департамент» в первом DropDownList, во втором dropDownList мне нужно взять «Докторов» только из этого «Департамента». Мой код: _form.phpЗависимые DropDownLists в yii

<div class="row"> 
    <?php echo $form->labelEx($model,'deps_id'); ?> 
    <?php echo $form->dropDownList($model,'deps_id', CHtml::listData(Deps::model()->findAll(), 'id','department'), 
      array(
      'prompt' => 'Choose department', 
      'value' => '0', 
      'ajax' => array(
      'type' => 'POST', 
      'url' => CController::createUrl('/mednotes/selectstaff'), 
      'update' => '#Mednotes_selectstaffid', //selector to update value 
      'data' => array('deps_id'=>'js:this.value'), 
     )  
     ) 
     ); 
    ?> 
    <?php echo $form->error($model,'deps_id'); ?> 
</div> 

<div class="row"> 
    <?php echo $form->labelEx($model,'staff_id'); ?> 
    <?php echo $form->dropDownList($model, 'staff_id', array('empty'=>'Choose doctor'), CHtml::listData(Staff::model()->findAll(), 'id', 'fullname')); ?> 
    <?php echo $form->error($model,'staff_id'); ?> 
</div> 

мои действия ниже

public function actionSelectStaff() 
    { 
    $giatUnit = (!empty($_POST['deps_id'])) ? $_POST['deps_id']: '0'; 

      $data=Staff::model()->findAll('deps_id=:deps_id', 
          array(':deps_id'=>$giatUnit)); 


      $data=CHtml::listData($data,'id','department'); 
      foreach($data as $value=>$department) 
      { 
      echo CHtml::tag('option',array('value'=>$value),CHtml::encode($department),true); 
      } 
    } 

Это не работает. А также у меня есть эта ошибка в firebug - 500 Внутренняя ошибка сервера Действительно нужна помощь. Скажи мне, что я делаю неправильно. Благодарю.

+0

Что такое ошибка сервера? Проверьте журналы сервера (apache?). – TZHX

+0

да, apache. проверенный файл журнала, 2 ошибки, как «неудачный запрос sql-запроса». – dintro

ответ

0

На первый: чтобы получить POST и GET параметров лучше использовать Yii::app()->request:

$giatUnit = Yii::app()->request->getParam('deps_id', '0'); 

На втором: вы должны быть уверены, что всегда использовать правильную оболочку, если вы хотите, чтобы ваши ссылки на работу на нескольких машинах. Я предлагаю вам переименовать действие на actionSelectstaff. В противном случае проверьте CUrlManager::caseSensitive значение (http://www.yiiframework.com/doc/api/1.1/CUrlManager#caseSensitive-detail)

На третьем: В actionSelectStaff действия вы пытаетесь получить модели с помощью поля:

$data=Staff::model()->findAll('deps_id=:deps_id', array(':deps_id'=>$giatUnit)); 

А дальше вы получаете listData с помощью id и department поля:

$data=CHtml::listData($data,'id','department'); 

Имеются ли оба поля (department и) представлены в модели Staff? Это довольно странно.

+0

спасибо, но проблема решена. Это была ошибка со значением в моих действиях. – dintro

Смежные вопросы