目前我正在使用CakePHP 2.6,我有2个表和多个连接表:
CREATE TABLE IF NOT EXISTS `iam-test_db`.`accesses` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`location_id` INT UNSIGNED NOT NULL,
`facility_id` INT UNSIGNED NOT NULL,
`department_id` INT UNSIGNED NOT NULL,
PRIMARY KEY (`id`),
CREATE TABLE IF NOT EXISTS `iam-test_db`.`systems` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`facility_id` INT UNSIGNED NOT NULL,
`name` VARCHAR(60) NOT NULL,
PRIMARY KEY (`id`),
CONSTRAINT `fk_systems_facilities`
FOREIGN KEY (`facility_id`)
CREATE TABLE IF NOT EXISTS `iam-test_db`.`accesses_systems` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`access_id` INT UNSIGNED NOT NULL,
`system_id` INT UNSIGNED NOT NULL,
PRIMARY KEY (`id`),
CONSTRAINT `fk_accesses_systems_accesses`
FOREIGN KEY (`access_id`)
CONSTRAINT `fk_accesses_systems_systems`
FOREIGN KEY (`system_id`)
我已经为设施和部门创建了成功依赖的填充下拉列表,并且当前将所有系统列为我的添加表单中的复选框。
My AccessesController.php
public function add() {
if ($this->request->is('post')) {
$this->Access->create();
if ($this->Access->save($this->request->data)) {
$this->Session->setFlash(__('The access has been saved.'));
return $this->redirect(array('action' => 'index'));
} else {
$this->Session->setFlash(__('The access could not be saved. Please, try again.'));
}
}
$locations = $this->Access->Location->find('list');
$systems = $this->Access->System->find('list');
$this->set(compact('locations', 'facilities', 'departments', 'systems'));
}
在我的accessses / add.ctp中,我已将此行包含在复选框
中echo $this->Form->input('System',array(
'label' => __('Systems',true),
'id' => 'AccessSystem',
'div' => 'checkbox',
'type' => 'select',
'multiple' => 'checkbox',
'options' => $systems,
));
位置/设施/部门下拉列表依赖于JsHelper / jquery。
现在我希望复选框也是依赖的,我选择哪个工具。但是我不知道如何制作它。我想我必须使用javascript / jquery。
我正在考虑显示一个按钮,然后单击一个弹出窗口,其中显示了与设施相关的系统。这是正确的方式还是你有更好的想法?
谢谢: - )
答案 0 :(得分:0)
我不确定我是否理解你的问题,所以我指的是问题所在。我相信你有很多系统,你想根据设施的ID自动检查/取消选中它们。您可以为它们创建一个部分,并在那里包含这些复选框。该部分可以有两种状态,折叠和展开,折叠时可以有+图标,展开时可以有 - 图标。单击+图标将展开该部分,单击 - 图标将折叠该部分。此外,您可以在复选框中添加一个类。我们假设您添加了一个'system-checkbox-' + id
类,其中id
是设施的ID。另外,我们假设复选框已包含在ID为div
的{{1}}中。然后,根据设施的ID检查和取消选中复选框将如下所示:
my-section
如果我误解了这个问题,请告诉我。