Материал: Автоматизация управления проектами в студии APPCRAFT

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
134
* @Config\Route("/users/{user}/edit/{step}", name =
"site_users_edit", defaults={ "step": "1"})
* @Config\ParamConverter("user", options = {"mapping":
{"user": "id"}})
*/
public function editAction(User $user, $step=1)
{
if (!($this->authChecker->isGranted(Role::TEACHER))) {
return $this->redirectToRoute('homepage');
}
if (($user->isGrantedBy('ROLE_ADMIN') or $user-
>isGrantedBy('ROLE_TEACHER')) and !($this->authChecker-
>isGranted(Role::ADMIN)) ) {
return $this->redirectToRoute('site_users_index');
}
if ($step > 2) {
$step = 2;
}
switch ($step) {
//общие данные
case 1:
$password = $user->getPassword();
$form = $this->createForm(new UserFormType(),
$user);
$form->handleRequest($this->request);
if ($form->isSubmitted() && $form->isValid()) {
$valid = true;
$sames = $this->getRepository('User')-
>createQueryBuilder('u')
->select('COUNT(u.id) AS id')
135
->where('u.username = :username')
->andWhere('u.id <> :id')
->setParameters(array('username' => $user-
>getUsername(), 'id' => $user->getId()))
->getQuery()->getSingleScalarResult();
if ($sames > 0) {
$form->get('username')->addError(new
FormError('Пользователь с таким логином уже существует.'));
$valid = false;
}
if ($valid) {
if (!is_null($form->get('password')-
>getData())) {
/** @var UserPasswordEncoder $encoder
*/
$encoder = $this-
>get('security.password_encoder');
$user->setSalt(User::generateSalt())
->setPassword($encoder-
>encodePassword($user, $user->getPassword()));
} else {
$user->setPassword($password);
}
$this->manager->persist($user);
$this->manager->flush();
$this->addNotice('success',
'users.html.twig',
array('notice' => 'user_changed',
'username' => $user->getUsername())
136
);
return $this-
>redirectToRoute('site_users_index');
}
}
$this->forms['user'] = $form->createView();
break;
case 2:
break;
}
$this->view['user'] = $user;
$this->navigation = array('active' => 'users');
return $this-
>render('AppBundle:Users:user'.$step.'.html.twig');
}
/**
* @param User $user
* @return Response
* @Config\Route("/users/{user}/remove", name =
"site_users_remove")
* @Config\ParamConverter("user", options = {"mapping":
{"user": "id"}})
*/
public function removeAction(User $user)
{
$user->setDeleted(true);
$this->manager->persist($user);
137
$this->manager->flush();
return $this->redirectToRoute('site_users_index');
}
}
Источник: https://baza.diplomsite.ru/previewfile/2299