2011-05-04 64 views
1

處理表單提交請告訴我來處理笨以下情況的最好辦法:笨 - 從不同的控制器動作

首頁控制器具有指標作用,並提交操作。

提交操作用於表單提交。我想通過索引控制器加載頁面 - 包括表單提交後,即表單錯誤數據重新填寫表單輸入錯誤等。

什麼是最好的方式做到這一點 - 沒有索引控制器處理主頁面加載和表單提交。

回答

3

如果你redirect(),你將無法使用set_value()重新填充你的表單域。

最簡單的是讓您的索引控制器處理默認加載行爲和提交。

function index() 
{ 
    if($this->input->post('foo')) 
    { // something was POSTed 
     $this->load->library('form_validation'); 
     //validation rules 
    } else 
    { // normal view 
     // 
    } 

    $this->load->view('home'); 
} 

或者,你可以設置你的indexsubmit控制器,並讓它們指向同一視圖,其檢測是否validation_errors()設定並相應地重新填充表單字段。

第三個選項(hackish):您可以使用flashdata將提交的錯誤和提交的表單值重定向回索引。像這樣的東西會工作:

$this->session->set_flashdata('errors', $validation_errors()); 
+0

幫了我很多。 – hairynuggets 2011-11-15 13:57:30

+0

所以如果我有一個控制器來處理註冊,我應該有一個if-else在數據發佈的地方,然後處理註冊細節。否則,只需加載註冊表單? – 2013-03-11 06:33:02

0

只需在您提交的行動指向您的形式:

<form method="post" action="/home/submit"> 

然後,使用submit行動之前驗證您的輸入回index行動。

+0

是的,但我如何獲得表單驗證錯誤和消息等回到主索引控制器準備好再次加載主頁面。 – David 2011-05-04 20:52:41

+0

我編輯了我的答案,希望能夠解決這個問題。 – 2011-05-04 20:55:30

+0

那麼你是否建議如果我的提交動作驗證失敗,那麼我仍然可以使用<?php echo validation_errors(); ?>從索引操作中獲取驗證錯誤? – David 2011-05-04 20:57:21