2013-11-28 4 views
1

Я реализую зависимое раскрывающееся меню и хочу сохранить их идентификаторы в таблице CANDIDATE.
У меня есть таблица с именем CENTER, которая имеет два идентификатора столбца, NAME.
Моя другая таблица DISTRICT, которая имеет три столбца ID, NAME и CENTER_ID.
Выбрав CENTER, я заполняю раскрывающийся список РАЙОНА, но район_ид не сохраняется в таблице CANDIDATE.

_formСохранение данных зависимого раскрывающегося списка - Yii

<div class="row"> 
    <?php echo $form->labelEx($model, 'district_id'); ?> 
    <?php 

    $dist = CHtml::listData(Center::model()->findAll(array('order' => 'id')), 'id', 'name'); 
    echo $form->dropDownList($model, 'center_id', $dist, array(
     'prompt' => '–select district–', 
     'ajax' => array('type' => 'POST', 
      'url' => CController::createUrl('candidate/districts'), 
      'update' => '#center_id', 

     ) 

    )); 
    ?> 
    <?php 
    echo CHtml::dropDownList('center_id','', array()); 
    ?> 
</div> 

CandidateController

public function actionDistricts() { 
    $centers = District::model()->findAll('center_id =:id', array(':id' => (int) $_POST['Candidate']['center_id'])); 
    $return = CHtml::listData($centers, 'id', 'name'); 
    foreach ($return as $centerId => $centerName) { 
     echo CHtml::tag('option', array('value' => $centerId), CHtml::encode($centerName), true); 
    } 
} 

ответ

1

1) Похоже, что ваш URL не правильно создан:

'url' => CController::createUrl('districts') 

Try:

'url' => CController::createUrl('candidate/districts') 

2) Форма вы пост:

$form->dropDownList($model, 'district_id', $dist... 

It сообщений district_id в CandidateController/actionDistricts(), где вы следующее:

$centers = Center::model()->findAll('id=:id', array(':id' => (int) $_POST['Candidate']['center_id'])); 

Я не могу увидеть любой входной содержащий center_id , кроме того, центр стрельбы :: model() -> findAll ('id: id' ..) не имеет смысла, если вы выполняете поиск по первичному ключу (id), выполните Center :: model() -> findByPk ($ Я бы);

В любом случае, вернемся к проблеме, ваш журнал firebug все это, он не может прочитать переменную center_id $ _POST, поэтому, чтобы закончить ее, попробуйте переписать actionDistricts().

Я не могу догадаться, какое отношение (один район, несколько центров на 1?) У вашего db, поэтому я не смогу полностью решить проблему здесь. Но вы должны переписать

$ center = Центр :: model() -> findAll ('id =: id', array (': id' => (int) $ _POST ['Candidate'] ['center_id' ]));

что-то, что ожидает $ _POST ['Candidate'] ['district_id'].

+0

я уже пробовал, он до сих пор ничего не возвращаются. –

+1

После того, как вы посмотрели на свою трассу Firebug, я думаю, проблема заключается в том, что вы отправляете district_id в свои actionDistricts, но на конце сервера вы пытаетесь прочитать $ _POST ['Candidate'] ['center_id'] – apoq

+1

. надеюсь, что это помогает) – apoq

0

Заменить

'url' => CController::createUrl('districts'), 

По

'url' => $this::createUrl('candidate/districts'), 
+0

Я все еще получаю вышеуказанную ошибку. –

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