KO3 - Kohana 3 - Как я могу передать данные $ _POST из контроллера / действия обратно в представление / форму, которое их вызвало? - PullRequest
0 голосов
/ 06 августа 2010

Я пытаюсь проверить отправку формы в Kohana 3. У меня есть форма :: open point для моего action_create в моем контроллере, который успешно проверяет данные, отправленные ему из формы, на мой взгляд.Если данные проходят проверку, новый элемент создается, как предполагалось, и пользователь перенаправляется на только что созданный элемент.Это работает правильно.Однако, если данные не проходят проверку, я бы хотел, чтобы пользователь был перенаправлен обратно на исходное представление / страницу, сохранив при этом переменную, содержащую опубликованные данные, чтобы я мог снова заполнить форму и отобразить ошибки.

Короче говоря, как я могу передать данные из вида -> контроллер -> исходный вид?

Спасибо всем!

Ответы [ 2 ]

0 голосов
/ 01 мая 2011

Я предполагаю, что вы используете Controller_Template.

Файл views / 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();

Файл views / template.php

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

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

Файл classes / controller / 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;

    }

}

Надеюсь, это поможет!

0 голосов
/ 06 августа 2010

Пользователь также задал этот вопрос на форумах Kohana .Те, кто ищет ответ на этот вопрос, должны взглянуть туда.

...