2011-03-14 64 views
1

我在我的index.ctp以下代码视图创建表格:CakePHP的形式选择作为参数

<?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视图。

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

编辑 理想情况下,我想的是,当用户点击“提交”,它会发送一个请求像管理员/ edit_gallery/X其中X将值关联的选择由用户制作,而不需要发送任何其他数据。我不知道这是否可能。

谢谢!

回答

0

是CakePHP的默认烘烤检查,如果数据不为空,换言之,如果一个表已提交,然后更新该记录的编辑方法。

所以,当你重定向到* edit_gallery *从表单中,数据属性不为null,因此新项目创建数据库的原因。

有很多方法可以解决这个问题。其中之一是从* 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)); 
?> 
+0

感谢您的答复!我会检查一下。但是,只是为了好奇,你知道我的**编辑**部分是否可以解释我的帖子? – 2011-03-14 16:47:26