Назначение неподходящего действия элементу формы - PullRequest
2 голосов
/ 11 февраля 2012

В документации 3.2 Kohana есть пример проверки в каталоге ORM.Позвольте мне повторить некоторый код, связанный с моим вопросом, здесь:

<form action="<?= URL::site(**'/members'**); ?>" method="post" accept-charset="utf-8">
<label for="username">Username:</label>
<input id="username" type="text" name="username" value="<?= Arr::get($values, 'username'); ?>" />
<label for="username" class="error"><?= Arr::get($errors, 'username'); ?>

<label for="password">Password:</label>
<input id="password" type="password" name="password" value="<?= Arr::get($values, 'password'); ?>" />
<label for="password" class="error"><?= Arr::get($errors, 'password'); ?>

<label for="password_confirm">Repeat Password:</label>
<input id="password_confirm" type="password" name="_external[password_confirm]" value="<?= Arr::path($values, '_external.password_confirm'); ?>" />
<label for="password_confirm" class="error"><?= Arr::path($errors, '_external.password_confirm'); ?>

<button type="submit">Create</button>
</form>

Затем он определяет контроллер с помощью:

public function action_create()
{
    $view = View::factory(**'members/create'**)
    ->set('values', $_POST)
    ->bind('errors', $errors);

    if ($_POST)
    {
        $member = ORM::factory('member')
        // The ORM::values() method is a shortcut to assign many values at once
        ->values($_POST, array('username', 'password'));

        $external_values = array(
            // The unhashed password is needed for comparing to the password_confirm field
            'password' => Arr::get($_POST, 'password'),
        // Add all external values
        ) + Arr::get($_POST, '_external', array());
        $extra = Validation::factory($external_values)
        ->rule('password_confirm', 'matches', array(':validation', ':field', 'password'));

        try
        {
            $member->save($extra);
            // Redirect the user to his page
            $this->request->redirect('members/'.$member->id);
        }
        catch (ORM_Validation_Exception $e)
        {
            $errors = $e->errors('models');
        }
    }

    $this->response->body($view);
}

Мой вопрос заключается в том, почему он назначает '/ members' вместо '/members / create к атрибуту action элемента формы?

1 Ответ

0 голосов
/ 12 февраля 2012

Это опечатка. Начиная с 3.1 form всегда должен указывать на ваш маршрут.

...