Я использую Kohana 3.3 в своем проекте, и я пытаюсь получить регистрацию пользователя и вход в систему. Я использую ORM Auth и Kostache для управления моим макетом/шаблонами.Kohana ORM Проверьте, существует ли пользователь и возвращает сообщения для просмотра?
Как сделать I:
- Проверьте, Имя пользователя уже существует? Если он возвращает в error_msg.mustache сообщение «Пользователь уже существует»
- Проверьте, соответствуют ли имя пользователя и адрес электронной почты в соответствии с моими правилами модели? Если не возвращает сообщение об ошибке error_msg.mustache с указанием того, что проверка не удалось
В мой контроллер у меня есть:
class Controller_User extends Controller {
public function action_signup()
{
$renderer = Kostache_Layout::factory();
$this->response->body($renderer->render(new View_FrontEnd_User, 'frontend/signup'));
}
public function action_createuser()
{
try {
$user = ORM::factory('User');
$user->username = $this->request->post('username');
$user->password = $this->request->post('password');
$user->email = $this->request->post('email');
// How do I:
// Check if Username already exists? If it does return to error_msg.mustache a message "User already Exists"
// Check if email is valid? If not return error message to error_msg.mustache indicating "email is not valid"
$user->save();
}
catch (ORM_Validation_Exception $e)
{
$errors = $e->errors();
}
}
}
В моей модели:
<?php
class Model_User extends Model_Auth_User
{
public function rules()
{
return array(
'username' => array(
array('not_empty'),
array('min_length', array(':value', 4)),
array('max_length', array(':value', 32)),
array('regex', array(':value', '/^[-\pL\pN_.]++$/uD')),
),
'email' => array(
array('not_empty'),
array('min_length', array(':value', 4)),
array('max_length', array(':value', 127)),
array('email'),
),
);
}
}
Спасибо большое заранее!
Правило, которое я внедрил выше, говорит: «Если в базе данных есть пользователь с таким-то именем пользователя, то он должен быть вами». Теперь я объясню, почему эта логика правильная. Предположим, что вы создали пользователя с именем пользователя 'bob'. Затем предположим, что вы хотите отредактировать какое-то поле 'bob'. Нотабене Теперь пользователь с именем пользователя «Боб», поэтому, если ваша проверка сделала наивную проверку на существование такого пользователя, он потерпит неудачу, даже если все, что вы пытались сделать, - это увеличить количество логинов пользователя 'bob'. – Jonathan
отлично! теперь мой вопрос заключается в том, как показать пользовательское сообщение об ошибке, когда это произойдет, и отправить его обратно в