我如何使用窗體幫助程序處理視圖中的相關組合框。例如:CakePHP中的國家/州下拉菜單
國家選擇框(選擇國家應篩選出所選國家的狀態) 美國選擇框
這應該使用Javascript/jQuery的等的幫助下,我穿過一個例子來抓發生與Cake的核心AJAX助手一樣,但如果有人可以幫助一個Javascript例子,那將會非常好。
感謝
我如何使用窗體幫助程序處理視圖中的相關組合框。例如:CakePHP中的國家/州下拉菜單
國家選擇框(選擇國家應篩選出所選國家的狀態) 美國選擇框
這應該使用Javascript/jQuery的等的幫助下,我穿過一個例子來抓發生與Cake的核心AJAX助手一樣,但如果有人可以幫助一個Javascript例子,那將會非常好。
感謝
在視圖/ edit.ctp
<script type="text/javascript">
$(document).ready(function(){
$('#country').change(function() {
$('#state').load('/controller/getStates/'+$(this).val());
});
});
</script>
<select id="country" name="country">
<option value="1">Greece</option>
</select>
<span id="state">
<select name="state">
<option value=""></option>
</select>
</span>
和Controller.php這樣
function getStates(int countryID){
$this->set('selectbox',
$this->State->find('list',array('conditions'=>'State.Country_id='.$countryID,
'fields;=>array('description')));
}
和看法/ getStates.ctp
<select name="state">
<option value=""></option>
<?php
foreach($selectbox as $option)
echo '<option value="'.$option['id'].'">'.$option['description'].'</option>'."\n";
?>
</select>
我希望我別忘了東西
@ gong的解決方案效果很好。不過,別忘了補充:
$this->layout = 'ajax';
控制器
,並確保沒有在佈局文件夾乾淨ajax.ctp ...否則所有的佈局代碼將在Ajax響應返回以及剛剛下拉代碼!
$states = $this->State->find('list', array(
'conditions' => array('State.country_id' =>$codePassed),
'order'=>array('State.stateName ASC'),
'fields' =>array('id','stateName'),
'recursive' => -1
));
$a='';
$a.= "<select name=\"state\">";
$a.= "<option value=\"\">Select state</option>";
foreach($states as $key=>$value){
$a.="<option value=\"$key\">".$value."</option>";
}
$a.="</select>";
您正在控制器中構建HTML,忽略了設計用於完成該操作的助手。這不是很好的做法。另外,這並沒有解決這個問題。 – 2012-10-04 01:43:51
@gong提供的解決方案是否爲您工作?請確認! – jagamot 2011-12-13 13:24:33