2010-08-05 89 views
0

我想驗證在Kohana 3中的表單提交。我有我的控制器中的形式:: open point到我的action_create,它成功驗證了從我的視圖中的表單發佈到它的數據。如果數據通過驗證,則按預期創建新項目,並將用戶重定向到剛剛創建的項目。這工作正常。但是,如果數據未通過驗證,我希望用戶返回原始視圖/頁面,同時保留包含已發佈數據的變量,以便重新填充表單並顯示錯誤。

簡而言之,如何從視圖 - >控制器 - >原始視圖傳遞數據?

謝謝大家!

回答

0

該用戶還提供了this question on the Kohana forums。 尋求答案的人應該看看那邊。

+0

謝謝,嗜睡! – PaleAilment 2010-08-07 08:48:20

+0

該鏈接已損壞。太糟糕了,它的主旨並未包含在答案中。 – 2015-03-22 19:25:29

0

我假設你使用的是Controller_Template。

文件視圖/ form.php的

// Set default variables if variables not passed to this view 
$username = isset($username) ? $username : ''; 

echo Form::open('login'); 

// Input: username 
echo Form::label('username', 'Username'); 
echo Form::input('username', $username); 
echo isset($errors['username']) ? $errors['username'] : ''; 

// Input: username 
echo Form::label('password', 'Password'); 
echo Form::input('password', $password); 
echo isset($errors['password']) ? $errors['password'] : ''; 

echo Form::close(); 

文件視圖/的template.php

<html> 
    <head><title>My Website</title></head> 

    <body> 
     <?php echo isset($content) ? $content : ''; ?> 
    </body> 
</html> 

文件類/控制器/ user.php的

Class Controller_User extends Controller_Template { 

    public $template = 'template'; 

    public function index() 
    { 

     $this->template->content = $this->display_form('form'); 

    } 

    public function login() 
    { 

     // Setup validation & rules here 



     // Check validation, assume $validation is Validation object 
     if ($validation->check() 
     { 
      // Validation succeeded. Do anything you want here 


     } 
     else 
     { 
      // Validation failed. Display form with entered values 

      $form_vars = $_POST; 
      $form_vars['errors'] = $validation->errors(); 

      // Display form 
      $this->template->content = $this->display_form('form', $form_vars); 

     } 

    } 

    // Displaying form 
    private function display_form($form_file, $form_vars=NULL) 
    { 

     $form = View::factory($form_file); 

     if ($form_vars != NULL) 
     { 

      foreach($form_vars as $key => $value) 
      { 
       $form->$key = $value; 
      } 

     } 

     return $form; 

    } 

} 

希望有所幫助!

相關問題