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();
}
サインアップ.口ひげ
<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>
あなたが私に与えることができる指針を前もって感謝します。私はこれに何時間も費やしましたが、まだ機能させることができません:(