我正在尝试使用Chained插件来限制用户选择错误国家/地区的城市。在我没有选择国家的那一刻,它让我从所有城市中选择。但是一旦我选择了一个国家,它就不会让我选择任何城市。我已经使用Chained网站上的代码正确使用此插件。 我的破碎国家/城市版本可以在这里看到 登录:访客 密码:密码 http://team.southpacificavionics.com/customers/add 如果你更改"添加"我的测试版本可以看到在那个网址上"测试" (对不起,我无法发布更多链接)。 我使用./cake烘焙来创建我的客户,国家和城市的控制器,模型,模板和关键关系。
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;
答案 0 :(得分:1)
您没有在城市下拉菜单中添加课程,但您应在城市下拉列表中将国家/地区ID添加为课程
$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'];
}