2010-05-18 149 views
0

如何提交可以根据URI做两件不同事情的表单?例如,如果URI包含字符串“new”,则表单将以不同于“new”不在URI中的方式提交。Codeigniter:提交表格

我遇到了麻烦,因为当提交表单时,它需要任何“form_open”所说的URI。

回答

1

改变form_open路径可能不是这样做的方式。你怎么用这个?填写表格的人是否会影响“新”字符串?

我会做的是在窗体上放置一个隐藏的输入,并将THAT值设置为“新”。然后在控制器中,使用GET获取输入表单的值,并根据该变量的值执行简单的IF/ELSE语句。

这样,你可以设置几种不同的方式来使用相同的表单 - hidden = new,hidden = old,hidden = brandnew,hiddend = reallyold都可以不同地处理表单值,甚至将它们发送到你的不同表格DB或其他。

+0

基本上,这是一个巨大的测试 - 我为新用户使用“新”,并为只需要更新某些信息的用户“更新”。隐藏输入唯一的方法? – 2010-05-18 14:19:08

+1

不,不是唯一的方法......你可以做一些像你原本想的事情。您可以在routes.php中创建两个路径,例如path/to/script/new和path/to/script/update - 然后,构建一个单一的表单视图,但可以根据需要更改或操作您需要的内容无论表单是通过“新建”还是“更新”路径加载的......这可能是您最简单的解决方案! – 2010-05-18 15:01:29

+0

嗯,你明白了。我一直在努力使用这个URI 3天。隐藏的输入是要走的路。 – 2010-05-18 15:13:25

0

凯文 - 我想我会做这样的事情之前,我有 - 这里有一个快速浏览一下:

在routes.php文件:

$route['some/pathname/(:any)'] = "my_controller/my_function/$1"; 

然后在mycontroller.php:

function my_function($type) 
{ 
    if ($type == "new") { 
     do this } 
    elseif ($type == "update)" { 
     do this } 
} 
+0

对,eddt。但是当我的表单被提交时会发生什么?根据我的form_open('location'...),URI的变化,对吧?这会造成一个小问题! – 2010-05-18 15:27:45

+0

那么通常当我使用CI时,我创建了一个额外的路径供我的表单提交,然后将表单指向控制器的那一部分,例如“some/formsubmit”(可能会或可能不会为形式提交过程,取决于需求) - 这样,无论提交来自何处(“新”或“更新”),他们都会去同一个提交地点!而且,由于您已经对TYPE进行了变形,您还可以将其传递给form_open字符串... – 2010-05-18 15:54:51