2014-10-01 83 views
1

我是Zend框架的新手。現在我正在玩Zend的形式。我需要將數據庫值加載到組合框取決於另一個組合框值。如何根據另一個組合框的值動態地將數據填充到組合框?

IE。當我選擇一個國家時,另一個組合框應該需要列出該國內的州。也一切都想從數據庫加載。

我嘗試過Google多次尋求解決方案,但找不到任何東西。

下面

//加載各國

我的代碼
$tblCoun = new Application_Model_DbTable_TblCountry(); 
$options = $tblComp->fetchCountiesPair();  
$tblCoun = new Zend_Form_Element_Select("cmbCountry"); 
$tblCoun ->setLabel("Select Country") 
     ->setRequired(true) 
     ->setAttrib("class", "form-control span-12"); 
$company->addMultiOptions($options); 
$tblCoun = new Application_Model_DbTable_TblCountry(); 
$options = $tblComp->fetchCountiesPair(); 

//這裏我需要加載狀態

$tblStat = new Zend_Form_Element_Select("cmbStates"); 
$tblStat->setLabel("Select State") 
     ->setRequired(true) 
     ->setAttrib("class", "form-control span-12"); 
$tblStat->addMultiOptions($options); 
+0

你有jquery ajax的知識嗎? – 2014-10-01 05:44:27

+0

yaah我知道ajax,但我喜歡用zend Technic來填充數據..有沒有內置的選項可以做到這一點? – 2014-10-01 06:54:51

+1

最近我在我上一次的zend項目中做了同樣的事情。我已經使用了jquery ajax。 – 2014-10-01 07:24:16

回答

0

你必須使用AJAX對於此方案,請按照此步驟,

1] Onchange of country dropdown通過選擇的countryID向服務器發送了ajax調用。 2]獲取該國家ID的所有子記錄,然後發送回調用函數。 3]刪除現有狀態選擇框並使用以下內容填充新條目。

for(i=0; i < states.length; i++) 
 
    $("#state").append('<option value=' + states[i]['stateID'] + '>' + states[i]['name'] + '</option>'); 
 
}

1

使您的佈局,並在其中添加以下代碼:

<?php echo $this->docType(); ?> 
<html> 
    <head> 
    <?php 
    $this->headLink()->setStylesheet($this->baseUrl('js/jquery/jquery-ui.min.css')); 
    echo $this->headLink(). PHP_EOL; 
    $this->headScript()->setFile($this->baseUrl('js/jquery/external/jquery/jquery.js')); 
    echo $this->headScript(); 
    ?> 
    </head> 
    <body> 
    <?php echo $this->layout()->content; ?> 
    </body> 
</html> 

現在去到您的視圖,並添加jQuery的Ajax代碼是這樣的:

$('#country').change(function() { 
    //For States 
    $.post('<?php echo $this->baseUrl('ajax/states'); ?>', {'country': $(this).val()}, 
    function(data) { 
    $('#state').html(data); 
    }); 
}); 

我已經爲ajax請求定義了單獨的控制器,您可以這樣做你喜歡這裏s是一些示例代碼:

public function statesAction() { 
    $this->_helper->layout->disableLayout(); 
    $country = $this->getRequest()->getParam('country'); 

    $countryMapper = new Application_Model_CountryMapper(); 
    $states = $countryMapper->fetchAllStates($country); 
    $this->view->states = $states; 
} 

正如我有Ajax控制器與statesAction我有鑑於與下面的代碼:

<option value="">Select States</option> 
    <?php foreach($this->states as $state): ?> 
    <option value="<?php echo $state->value; ?>"><?php echo $state->name; ?></option> 
    <?php endforeach; ?> 

這只是一個粗略的想法。我的代碼中存在拼寫錯誤的可能性,因爲我從我的項目中獲得了這個錯誤。

我希望它可以幫助你。

相關問題