我正在尝试在 Kohana 3 中验证表单提交。我的控制器中有 form::open 指向我的 action_create,它成功地验证了从我视图中的表单发布到它的数据。如果数据通过验证,则会按预期创建一个新项目,并将用户重定向到刚刚创建的项目。这可以正常工作。但是,如果数据验证失败,我希望将用户引导回原始视图/页面,同时保留一个包含已发布数据的变量,以便我可以重新填充表单并显示错误。
简而言之,如何从视图-> 控制器-> 原始视图传递数据?
谢谢大家!
我正在尝试在 Kohana 3 中验证表单提交。我的控制器中有 form::open 指向我的 action_create,它成功地验证了从我视图中的表单发布到它的数据。如果数据通过验证,则会按预期创建一个新项目,并将用户重定向到刚刚创建的项目。这可以正常工作。但是,如果数据验证失败,我希望将用户引导回原始视图/页面,同时保留一个包含已发布数据的变量,以便我可以重新填充表单并显示错误。
简而言之,如何从视图-> 控制器-> 原始视图传递数据?
谢谢大家!
用户也在Kohana 论坛上提出了这个问题。那些寻求答案的人应该看看那里。
我假设您使用的是 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;
}
}
希望有帮助!