2013-11-28 63 views
1

我正在實現依賴下拉列表並希望將其ID保存在表CANDIDATE中。
我有一個名爲CENTER的表,它有兩列ID,名稱。
我的另一張表是DISTRICT,它有三列ID,NAME和CENTER_ID。
通過選擇CENTER,我正在填充DISTRICT下拉列表,但是district_id未保存在表格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' => CController::createUrl('districts') 

嘗試:

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

2)表,您交的:

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

這帖子district_id到CandidateController/actionDistricts(),在那裏你以下幾點:

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

我看不到任何含輸入center_id ,而且,如果你通過主鍵(id)進行搜索,Center :: model() - > findAll('id:id'..)沒有任何意義,那麼Center :: model() - > findByPk($ ID);不管怎樣,回到問題,你的螢火蟲日誌sais它的一切,它不能讀取center_id形式$ _POST變量,所以完成它,嘗試重寫actionDistricts()。

我無法猜測你的分貝具有什麼樣的關係(一個分區,幾個中心每個?),所以我無法完全解決這個問題。但你應該重寫

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

到需要$ _POST ['Candidate'] ['district_id']的東西。

+0

我已經試過了,但它仍然不返回任何東西。 –

+1

查看你的螢火蟲蹤跡後,我猜問題是你將district_id發送到你的actionDistricts,但在服務器端嘗試讀取$ _POST ['Candidate'] ['center_id'] – apoq

+1

我做了更新。希望它有幫助) – apoq

0

更換

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

通過

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

我仍然收到上述錯誤。 –