我想驗證在Kohana 3中的表單提交。我有我的控制器中的形式:: open point到我的action_create,它成功驗證了從我的視圖中的表單發佈到它的數據。如果數據通過驗證,則按預期創建新項目,並將用戶重定向到剛剛創建的項目。這工作正常。但是,如果數據未通過驗證,我希望用戶返回原始視圖/頁面,同時保留包含已發佈數據的變量,以便重新填充表單並顯示錯誤。
簡而言之,如何從視圖 - >控制器 - >原始視圖傳遞數據?
謝謝大家!
我想驗證在Kohana 3中的表單提交。我有我的控制器中的形式:: open point到我的action_create,它成功驗證了從我的視圖中的表單發佈到它的數據。如果數據通過驗證,則按預期創建新項目,並將用戶重定向到剛剛創建的項目。這工作正常。但是,如果數據未通過驗證,我希望用戶返回原始視圖/頁面,同時保留包含已發佈數據的變量,以便重新填充表單並顯示錯誤。
簡而言之,如何從視圖 - >控制器 - >原始視圖傳遞數據?
謝謝大家!
該用戶還提供了this question on the Kohana forums。 尋求答案的人應該看看那邊。
我假設你使用的是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;
}
}
希望有所幫助!
謝謝,嗜睡! – PaleAilment 2010-08-07 08:48:20
該鏈接已損壞。太糟糕了,它的主旨並未包含在答案中。 – 2015-03-22 19:25:29