CakePHP Update更改下拉列表

时间:2013-05-16 11:42:30

标签: cakephp drop-down-menu

我在表单中有2个下拉列表。当第一个的选定值发生变化时,我需要更新第二个值。我尝试过很多我在这里找到的东西,但没有任何效果。

以下是我视图中表单的字段:Events / add.ctp

<?php
    echo $this->Form->input('short_desc');
    echo $this->Form->input('long_desc');
    echo $this->Form->input('failure');
    echo $this->Form->input('server_id');
    echo $this->Form->input('application');
    echo "</div>";
?>

因此,当更改server_id列表时,需要更新应用程序列表。

这是我在EventController.ctp

中的add()方法
public function add() {
    if ($this->request->is('post')) {
        $this->Event->create();
        if ($this->Event->save($this->request->data)) {
            $this->Session->setFlash(__('The event has been saved'));
            $this->redirect(array('action' => 'index'));
        } else {
            $this->Session->setFlash(__('The event could not be saved. Please, try again.'));
        }
    }
    $servers = $this->Event->Server->find('list');
    $applications = $this->Event->Application->find('list');
    $this->set(compact('servers', 'applications'));
}

我打赌你们也需要我的模特:

  • 应用程序所属的服务器
  • 应用程序hasAndBelongsToMany事件
  • 事件属于服务器

例如:

的print_r($应用);

Array
(
[1] => Application A
[2] => Application B
[5] => Application C
)

的print_r($服务器);

Array
(
[128] => ASSETPLUS
[1] => CTX1
[2] => CTX2
[3] => CTX3
[15] => CURSUS
[127] => ESX5
[129] => Test
)
  • 申请A属于ASSETPLUS,CTX1。
  • 申请B,申请C属于CURSUS。

如果我在服务器列表中选择CURSUS,我需要在应用程序列表中获取应用程序B和应用程序C. 如果我在服务器列表中选择CTX1或ASSETPLUS,我需要在我的应用程序列表中获取应用程序A.

我想我已经很清楚了,任何帮助都会受到赞赏。

如果还需要其他任何东西,请问问。

提前谢谢。

0 个答案:

没有答案