我有一個html表單,例如他的動作是「exmaple.com/mail.php?name=dan
」。將形式爲&Codeigniter的GET參數傳遞給控制器
如何將此參數傳遞給Codeigniter的控制器?
在codeigniter中的'行動'將 - example.com/mail
,我不能做exmaple.com/mail?name=dan
,對不對?所以我能做什麼? (而且..我不能使用Ajax這個:-))
我有一個html表單,例如他的動作是「exmaple.com/mail.php?name=dan
」。將形式爲&Codeigniter的GET參數傳遞給控制器
如何將此參數傳遞給Codeigniter的控制器?
在codeigniter中的'行動'將 - example.com/mail
,我不能做exmaple.com/mail?name=dan
,對不對?所以我能做什麼? (而且..我不能使用Ajax這個:-))
有幾種解決方案。你可以像這樣做$name=$this->input->get("name")
,但是如果你想保留Codeigniter的哲學,你可以使用Javascript來將表單的動作url改爲/ mail/dan。在這種情況下,您可以通過以下方式訪問數據:$name=$this->uri->segment($number)
。在你的情況下$ number是2,因爲「dan」在第二個URI的段中。
注意:如果您使用第二種方法,請記住codeigniter的默認行爲是自動從URI的第一個和第二個段調用controller/method。 (http://domain.com/controller/method)爲了防止這種行爲,你可以編輯application/config/routes.php文件。有關詳細說明,請參閱oficial guide。
可以發出GET參數作爲隱藏輸入元素,即:
<input type=hidden name="name_of_parameter" value="value_of_parameter" />
無論其,有兩個非常要記住這樣做時重要的事情:
由於我從您的示例推斷出您正在使用此識別和驗證用戶,我強烈建議您使用瀏覽器cookie(以及編碼此數據的校驗和的數字簽名,所以如果它被改變了,你可以很容易地識別它是無效的)。
您還應該設置查詢字符串變量爲true:
在你笨的配置;
$config['enable_query_strings'] = TRUE;
但請記住,這會改變您的codeigniter應用程序的行爲方式。 See more here
從CodeIgniter 2.x開始,這已不再需要,因爲GET參數現在默認啓用,並具有單獨的設置「allow_get_array」。 –
爲什麼不能簡單地在該HTML表單中添加一個隱藏字段並將其作爲POST數據與表單一起發送?
<input type="hidden" name="name" value="dan" />
當然,您可以用您當前擁有的任何值動態替換值部分。
我忘記了Codeigniter中有段。 :-)謝謝你的正確答案和其他人(隱藏其好的解決方案,但它不是我想找的..)。 – Luis