2010-05-18 174 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