0

我正在尝试在 Kohana 3 中验证表单提交。我的控制器中有 form::open 指向我的 action_create,它成功地验证了从我视图中的表单发布到它的数据。如果数据通过验证,则会按预期创建一个新项目,并将用户重定向到刚刚创建的项目。这可以正常工作。但是,如果数据验证失败,我希望将用户引导回原始视图/页面,同时保留一个包含已发布数据的变量,以便我可以重新填充表单并显示错误。

简而言之,如何从视图-> 控制器-> 原始视图传递数据?

谢谢大家!

4

2 回答 2

0

用户也在Kohana 论坛上提出了这个问题。那些寻求答案的人应该看看那里。

于 2010-08-06T11:23:06.373 回答
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;

    }

}

希望有帮助!

于 2011-05-01T02:42:17.407 回答