CakePHP中的国家/州下拉列表

CakePHP中的国家/州下拉列表,cakephp,Cakephp,如何使用form helper处理视图中的依赖组合框。例如: 国家选择框(选择国家应过滤掉所选国家的状态) 状态选择框 这应该在Javascript/Jquery等的帮助下实现。我在Cake的核心AJAX助手中遇到了一个同样的例子,但是如果有人能帮我做一个Javascript例子,那就太好了 在views/edit.ctp中感谢 <script type="text/javascript"> $(document).ready(function (){ $('#country').

如何使用form helper处理视图中的依赖组合框。例如:

国家选择框(选择国家应过滤掉所选国家的状态) 状态选择框

这应该在Javascript/Jquery等的帮助下实现。我在Cake的核心AJAX助手中遇到了一个同样的例子,但是如果有人能帮我做一个Javascript例子,那就太好了

在views/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>
和视图/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';
并确保layouts文件夹中有一个干净的ajax.ctp。。。否则,所有的布局代码都将在ajax响应中返回,并且只返回下拉代码

$states=$this->State->find('list',array(
    $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>";
“条件”=>array('State.country\u id'=>$codePassed), 'order'=>数组('State.stateName ASC'), 'fields'=>array('id','stateName'), “递归”=>-1 )); $a=''; $a.=”; $a.=“选择状态”; foreach($key=>$value){ $a.=''.$value.''; } $a.=”;
@gong提供的解决方案对您有效吗?请确认!您正在控制器中构建HTML,而忽略了专门为此设计的帮助器。这不是好的做法。此外,这根本没有解决这个问题。这个解决方案适用于哪个版本的CakePHP?
    $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>";