CakePHP表单选择作为参数

时间:2011-03-14 02:53:54

标签: php forms cakephp select

我在 index.ctp 视图中有以下代码来创建表单:

<?php 
    echo $this->Form->create(false,array('url' => array('controller' => 'admins', 'action' => 'edit_gallery')));

    echo $this->Form->input('name', array('options' => $array,'empty' => 'Select a gallery'));

    echo $this->Form->end(__('Submit', true));
?>

这些代码会创建一个项目下拉列表,每个项目都有一个关联的数字作为值。 在我的 admins_controller 中,我实施的 edit_gallery 操作完全与您烘焙项目时相同,只是我将典型的编辑更改为 edit_gallery 即可。

我想要的是以下内容:用户从列表中选择一个项目,然后点击“提交”,然后他将进入 edit_gallery.ctp 视图,并使用表单编辑信息数据库中的该项目并进行更新。我的问题是,不是这样做,而是当用户点击提交时,在数据库中创建一个新项目,它甚至不显示ctp视图。

一般来说,我的问题是:在用户点击“提交”后,如何在目标网页中获取表单的选定选项?

修改 理想情况下,我想要的是,当用户点击“提交”时,它会发送一个请求,例如 admins / edit_gallery / x ,其中 x 将是与之关联的值用户进行的选择,而不向操作发送任何其他数据。我不知道这是否可能。

谢谢!

1 个答案:

答案 0 :(得分:0)

如果 数据 不为空,则默认情况下CakePHP进行检查的编辑方法,换句话说,如果已提交表单,则更新该记录。< / p>

因此,当您从表单重定向到* edit_gallery *时, 数据 属性不为空,因此在数据库中创建新项目的原因。< / p>

有很多方法可以解决这个问题。其中一个是从* edit_gallery *方法中删除该检查,创建另一个方法,如* save_gallery *,并从* edit_gallery.ctp *调用该方法。

所以* edit_gallery.ctp *表单看起来像:

<?php 
    echo $this->Form->create(false,array('url' => array('controller' => 'admins', 'action' => 'save_gallery')));

    (your form info)

    echo $this->Form->end(__('Submit', true));
?>