если вдуматься, то нет никакой разницы, или это нужно регулировать приватными сетерами, или твоя модель также поддается манипулированию, и с таким же успехом ктонить напишет foreach прям в контроллереЕсли getById делает return $this, то ога.
если вдуматься, то нет никакой разницы, или это нужно регулировать приватными сетерами, или твоя модель также поддается манипулированию, и с таким же успехом ктонить напишет foreach прям в контроллереЕсли getById делает return $this, то ога.
$form = new FormUser;
$form->setGroup('login','password','email','NameFamily','captcha');
$form->setData(Request::getPost());
if (!$form->isValid()) {
return $form->getErrors();
}
$user = new User($form->getData());
if (!$user->save()) {
return $user->getErrors();
}
return true;
В представление данные я пока не кидаю, но там все стандартно как у всех, поэтому просто ретурном вывел...То есть не ясно где тут рендрится форма на пример.
Хороший вопрос, дело все в том, что пользователь может и не записаться по причине обрыва соединения с бд и т.пА самое главное - валидацию у вас проходит форма, а потом юзер может не сохраниться. Как так?
Пока ничего не выводится в представление, поэтому сделал просто через ретурн...А также у вас этот кусок кода возвращает массив/bool. Все и всегда матерятся на подобные функции в ядре php и сами также пишут
Да пусть себе летит наверх и рисуется заглушка на 500-ю. Если соединение с базой рвется каждый день, то вы решаете не ту проблему.по причине обрыва соединения с бд и т.п
$view = new View('register/form');
$form = new FormUser;
$form->setGroup('login','password','email','NameFamily','captcha');
$form->setData(Request::getPost());
if (!$form->isValid()) {
$view->errors = $form->getErrors();
return $view->show();
}
try {
$user = new User($form->getData());
$user->save();
}
catch (Exception $e){
$view->errors[] = 'Что-то пошло не так, попробуйте зарегистрироваться позднее...';
}
if (!isset($view->errors)) {
$view->message = 'Вы успешно зарегистрировалиь в системе...';
}
$view->show();
public function addUser(HttpFoundation\Request $request)
{
$form = $this->createForm(new Form\UserType(), new Entity\User());
if( $request->isMethod('POST') && $form->bind($request)->isValid() ) {
$user = $form->getData()->setAddDate();
$em = $this->getDoctrine()->getManager();
$em->persist($user);
$em->flush();
return $this->redirect($this->generateUrl('homepage'));
}
return $this->render('SiteUsersBundle:User:add.html.twig', array('form' => $form->createView()));
}
Я бы не сказал что я прям любитель) Я месяц ее изучаю - и мне очень нравится. Для меня это сложно, но то что на выходе получается - стоит сложностей)GusakovNick
Смотрю вы у нас любитель симфони, что же, может там действительно все красиво и супер будет, но я с ней незнаком, так что не сочтите за наглость, не могли бы вы дописать суда немного функционала, а именно:
Что если соединение с бд оборвется, или по каким то причинам пользователь не сможет записаться в бд, то наверное будет брошено исключение там где - то внутри доктрины, если такое вот произошло надо рядом с формой вывести сообщение, типа "Извините что- то пошло не так, попробуйте зарегаться позже.."
И еще один вопрос, где тут проходит валидация таких правил как "повтор пароля" (у меня ее нет, но все же хочется посмотреть) и капча.
И последние, что нужно будет писать заново в моменте изменения пользовательских данных (какой класс там еще прописывать и т.д)
Может и действительно попробовать симфони или взять у нее пару идей, вообщем посмотрим как выше написанное будет "красиво"...
$view = new View('register/form');
$form = new FormUser;
$form->setGroup('login','password','email','NameFamily','captcha');
// if is post ??
$form->setData(Request::getPost());
if ($form->isValid()) {
try {
$user = new User($form->getData());
$user->save();
}
catch (Exception $e){
$view->errors[] = 'Что-то пошло не так, попробуйте зарегистрироваться позднее...';
}
}
else{
$view->errors = $form->getErrors();
}
$view->show();
Entities\User:
type: entity
table: users
id:
id:
type: integer
generator:
strategy: AUTO
fields:
name:
type: string
length: 50
oneToOne:
address:
targetEntity: Address
joinColumn:
name: address_id
referencedColumnName: id
register_user:
pattern: /register
defaults: { _controller: SiteUserBundle:Edit:register }
updating_user:
pattern: /user/edit/{id}
defaults: { _controller: SiteUserBundle:Edit:update }
requirements:
page: \d+
//controller
$form = new FormRegister(Request::getPost());
if ($form->isValid()) {
$user = new User($form->getData());
$user->save(array('validate' => false));
}
else {
$form->getErrors();
}
//form
class FormRegister extends Form {
public $login;
public $password;
public $email;
public $captcha;
public $password2;
public function rules()
{
return array(
'login' => 'User.login',
'password' => 'User.password',
'email' => 'User.email',
'captcha' => array(
array('required'),
array('captcha'),
),
'password2' => array(
array('required'),
array('repeat', 'password'),
),
);
}
}