CakePHP 链式插件下拉列表未链接
CakePHP Chained Plugin Dropdown not linking
我正在尝试使用 Chained 插件来限制用户从 select 前往错误国家/地区的城市。在我没有国家 selected 的那一刻,它让我从所有城市中进行选择。但是一旦我select一个国家它就不会让我select任何城市。我已经使用来自 Chained 网站的代码让这个插件正常工作。
我的损坏的 countries/cities 版本可以在这里看到
登录:访客
密码:密码
http://team.southpacificavionics.com/customers/add
如果您将 url 上的 "add" 更改为 "test"(抱歉,我无法 post 更多链接),则可以看到我的测试版本。
我使用 ./cake bake 来创建我的客户、国家和城市控制器、模型、模板和关键关系。
You can see from this image that the cities are linked to countries
这是我的 add.ctp 客户
<?php echo $this->Html->script('jquery.min'); ?>
<?php echo $this->Html->script('jquery.chained'); ?>
<script type="text/javascript">
$(document).ready(function () {
$("#cities").chained("#countries");
});
</script>
<script type="text/javascript">
$(document).ready(function () {
alert('java is working');
});
</script>
<?php
/**
* @var \App\View\AppView $this
*/
?>
<div class="customers form large-9 medium-8 columns content">
<?= $this->Form->create($customer) ?>
<fieldset>
<legend><?= __('Add Customer') ?></legend>
<?php
echo $this->Form->input('country_id', ['options' => $countries, 'empty' => true,'id'=>'countries']);
echo $this->Form->input('city_id', ['options' => $cities, 'empty' => true,'id'=>'cities']);
?>
</fieldset>
<?= $this->Form->end() ?>
这是我的mysql代码
CREATE TABLE IF NOT EXISTS `southpac_team`.`customers` (
`id` INT NOT NULL,
`country_id` INT NULL,
`city_id` INT NULL,
PRIMARY KEY (`id`))
ENGINE = InnoDB;
CREATE TABLE IF NOT EXISTS `southpac_team`.`countries` (
`id` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(100) NULL,
PRIMARY KEY (`id`))
ENGINE = InnoDB;
CREATE TABLE IF NOT EXISTS `southpac_team`.`cities` (
`id` INT NOT NULL AUTO_INCREMENT,
`country_id` INT NOT NULL,
`name` VARCHAR(100) NULL,
PRIMARY KEY (`id`))
ENGINE = InnoDB;
您没有在城市下拉选项中添加 class,但您应该 在城市下拉选项中添加国家 ID 作为 class
如何在 CakePHP 下拉菜单中添加 class
$items = $this->Cities->find('all')->all()->toArray();
$cities = [];
foreach ($items as $key => $value) {
$cities[$key]['value'] = $value['id'];
$cities[$key]['text'] = $value['indent_no'];
$cities[$key]['class'] = $value['country_id'];
}
我正在尝试使用 Chained 插件来限制用户从 select 前往错误国家/地区的城市。在我没有国家 selected 的那一刻,它让我从所有城市中进行选择。但是一旦我select一个国家它就不会让我select任何城市。我已经使用来自 Chained 网站的代码让这个插件正常工作。 我的损坏的 countries/cities 版本可以在这里看到 登录:访客 密码:密码 http://team.southpacificavionics.com/customers/add 如果您将 url 上的 "add" 更改为 "test"(抱歉,我无法 post 更多链接),则可以看到我的测试版本。 我使用 ./cake bake 来创建我的客户、国家和城市控制器、模型、模板和关键关系。
You can see from this image that the cities are linked to countries
这是我的 add.ctp 客户
<?php echo $this->Html->script('jquery.min'); ?>
<?php echo $this->Html->script('jquery.chained'); ?>
<script type="text/javascript">
$(document).ready(function () {
$("#cities").chained("#countries");
});
</script>
<script type="text/javascript">
$(document).ready(function () {
alert('java is working');
});
</script>
<?php
/**
* @var \App\View\AppView $this
*/
?>
<div class="customers form large-9 medium-8 columns content">
<?= $this->Form->create($customer) ?>
<fieldset>
<legend><?= __('Add Customer') ?></legend>
<?php
echo $this->Form->input('country_id', ['options' => $countries, 'empty' => true,'id'=>'countries']);
echo $this->Form->input('city_id', ['options' => $cities, 'empty' => true,'id'=>'cities']);
?>
</fieldset>
<?= $this->Form->end() ?>
这是我的mysql代码
CREATE TABLE IF NOT EXISTS `southpac_team`.`customers` (
`id` INT NOT NULL,
`country_id` INT NULL,
`city_id` INT NULL,
PRIMARY KEY (`id`))
ENGINE = InnoDB;
CREATE TABLE IF NOT EXISTS `southpac_team`.`countries` (
`id` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(100) NULL,
PRIMARY KEY (`id`))
ENGINE = InnoDB;
CREATE TABLE IF NOT EXISTS `southpac_team`.`cities` (
`id` INT NOT NULL AUTO_INCREMENT,
`country_id` INT NOT NULL,
`name` VARCHAR(100) NULL,
PRIMARY KEY (`id`))
ENGINE = InnoDB;
您没有在城市下拉选项中添加 class,但您应该 在城市下拉选项中添加国家 ID 作为 class
如何在 CakePHP 下拉菜单中添加 class
$items = $this->Cities->find('all')->all()->toArray();
$cities = [];
foreach ($items as $key => $value) {
$cities[$key]['value'] = $value['id'];
$cities[$key]['text'] = $value['indent_no'];
$cities[$key]['class'] = $value['country_id'];
}