Kohana 3.3 & Kostache - невозможно отобразить ошибки проверки ORM в форме
Я пытаюсь создать страницу регистрации пользователя для моего сайта, используя Kohana 3.3 и Kostache в качестве моей системы шаблонов. У меня возникают трудности с проверкой формы для отображения ошибок проверки на той же странице. Прямо сейчас, когда я нажимаю кнопку отправки формы и отправляю все пустые значения в форме (имя пользователя, адрес электронной почты и пароль), все, что я получаю, - это форма, которую нужно обновить, когда я должен получить ошибки проверки, такие как имя пользователя пусто, электронная почта пуста и т. д. (я использую Model_Auth_User).
Понятия не имею, что я делаю не так.
Модель:
class Model_User extends Model_Auth_User
{
public function rules()
{
return array(
'username' => array(
array('not_empty'),
array('alpha_dash'),
array('min_length', array(':value', 4)),
array('max_length', array(':value', 20)),
array(array($this, 'unique'), array('username', ':value')),
),
'email' => array(
array('not_empty'),
array('min_length', array(':value', 4)),
array('max_length', array(':value', 127)),
array('email'),
),
);
}
}
контроллер:
<?php defined('SYSPATH') or die('No direct script access.');
class Controller_User extends Controller {
public function action_index()
{
}
public function action_login()
{
$renderer = Kostache_Layout::factory();
$this->response->body($renderer->render(new View_FrontEnd_User, 'frontend/login'));
}
public function action_signup()
{
$renderer = Kostache_Layout::factory();
$this->response->body($renderer->render(new View_FrontEnd_User, 'frontend/signup'));
}
public function action_createuser()
{
$signupView = new View_FrontEnd_User();
try {
$user = ORM::factory('User');
$user->username = $this->request->post('username');
$user->password = $this->request->post('password');
$user->email = $this->request->post('email');
$user->save();
}
catch (ORM_Validation_Exception $e)
{
$errors = $e->errors();
$signupView->errors = $errors;
}
$renderer = Kostache_Layout::factory();
$this->response->body($renderer->render(new View_FrontEnd_User, 'frontend/signup'));
}
}
Посмотреть
<?php defined('SYSPATH') or die('No direct script access.');
class View_FrontEnd_User extends View_Main
{
public $errors = array();
}
signup.mustache
<p>
<form action="user/createuser" method="post">
<fieldset style="width: 20em;">
<legend>User Registration</legend>
<label>Enter your username</label>
<input type="text" name="username" />
<label for="username" class="error">
{{#errors}}{{username}}{{/errors}}
</label>
<label>Enter your password</label>
<input type="password" name="password" />
<label for="password" class="error">
{{#errors}}{{password}}{{/errors}}
</label>
<label>Email</label>
<input type="text" name="email" />
<input type="submit" value="Submit" class="nice blue radius button" />
</fieldset>
</form>
{{#errors}}{{.}}{{/errors}}
</p>
Большое спасибо за любые указатели, которые вы можете дать мне. Я потратил часы на это и до сих пор не могу заставить его работать:(
1 ответ
+ Изменить
$this->response->body($renderer->render(new View_FrontEnd_User, 'frontend/signup'));
в
$this->response->body($renderer->render($signupView, 'frontend/signup'));