php - 如何在cakephp中进行级联

标签 php mysql cakephp

我想在 cakephp 中进行级联。我正在创建城市经理,其中有两个区域和州作为下拉列表。如果我选择区域,那么状态应该根据所选区域来。请帮助我模型 View 和 Controller 的代码应该是什么。我是 cakephp 的新手。城市表如下

如果不存在“城市”则创建表(
`id` int(11) NOT NULL,
  `zone_id` int(11) NOT NULL,
  `state_id` int(11) NOT NULL,
  `name` varchar(255) NOT NULL,
  `代码` varchar(255) NOT NULL,
  `total_sample` int(11) NOT NULL,
  `population` int(11) NOT NULL,
  `is_active`tinyint(1) NOT NULL,
  “创建”日期时间不为空,
  ‘修改’日期时间不为空
) ENGINE=InnoDB AUTO_INCRMENT=2 默认字符集=latin1;

--
-- 转储表“cities”的数据
--

插入“城市”(“id”、“zone_id”、“state_id”、“name”、“code”、“total_sample”、“population”、“is_active”、“created”、“modified”)值
(1, 2, 2, '阿瓦迪', '15018', 10, 100, 1, '2016-10-03 00:00:00', '2016-10-03 00:00:00');

请帮助我编写 Controller 、 View 和模型的代码。

最佳答案

您可以通过两种方式做到这一点

  1. 使用Chained JavaScript 库。这样你就必须格式化下拉菜单。为此,您可以关注 This Tutorial
  2. 根据选择的区域和州使用 Ajax 请求

对于选项 2:Html

echo $this->Form->input('zone_id', ['options' => $zons, 'empty' => '','id'=>'zoneDropdown']);
echo $this->Form->input('state_id', ['options' => $state, 'empty' => '','id'=>'stateDropdown']);
echo $this->Form->input('city', ['options' => [], 'empty' => '','id'=>'cityDropdown']);

Html 的 Ajax 脚本

$('#zoneDropdown, #stateDropdown').on('change', function (evt) {
    ZONE = $("#zoneDropdown").val();  
    STATE = $("#stateDropdown").val();  
    $.ajax({
      type: "GET",
      url: baseURL+"cities/getCitiesOptions/"+ZONE+"/"+STATE,
      dataType: "json",
      success : function(returnData) {
          $("#cityDropdown").val(returnData);  
        }
    });
}); 

以及 Controller 功能需要添加

 Public function getCitiesOptions($zone_id=null, $state_id=null){
    $conditions = [];
    if (!empty($zone_id)) {
        $conditions['Cities.zone_id'] = $zone_id;
    }
    if (!empty($state_id)) {
        $conditions['Cities.state_id'] = $state_id;
    }

    $cities = $this->Cities->find('all',['conditions'=>$conditions])->all()->toArray();
    // make Options for dorpdown
    $html = '';
    foreach ($cities as $key => $value) {
        $html .= '<option value="'.$value['code'].'">'.$value['name'].'</option>';
    }
    return $html;
}

关于php - 如何在cakephp中进行级联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40035315/

相关文章:

php - 如何在 Ubuntu 22 的 Apache 中使用 Php7.4?

php - Cakephp 3.0 登录每次都返回 false

php - 新的 html5 canvas 属性与 javascript 交互

php - 从 PHP 更新 SQL 中的值

mysql - 按周分组,但如果属于下个月则新分组

mysql 以 double 显示结果总和

php - 使用正则表达式查找和替换 SQL 查询

php - 如何使用 CakePHP 进行客户投资组合管理应用程序

php - cakephp3测试组件在非对象上调用成员函数on()

php - 在表字段中检索 MYSQL 数据的最简单方法是按出现次数的降序排列吗?