Если вы используете базу данных для хранения пользователей, вы можете сохранить информацию о ней, как показано ниже:
(от книга безопасности Symfony .)
$factory = $this->get('security.encoder_factory');
$user = new Acme\UserBundle\Entity\User();
$encoder = $factory->getEncoder($user);
$password = $encoder->encodePassword('mypassword', $user->getSalt());
$user->setPassword($password);
Однако я хочу создать повторно используемую форму пользователя:
namespace App\Bundle\WebBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilder;
class UserType extends AbstractType
{
public function buildForm(FormBuilder $builder, array $options)
{
$builder
->add('username')
->add('password')
;
}
public function getName()
{
return 'app_bundle_webbundle_usertype';
}
}
И используйте форму в контроллере:
(с здесь )
if ($request->getMethod() == 'POST') {
$form->bindRequest($request);
if ($form->isValid()) {
$em = $this->getDoctrine()->getEntityManager();
$em->persist($task);
$em->flush();
return $this->redirect($this->generateUrl('task_success'));
}
}
Где вы должны поместить код, используемый для хеширования вашего пароля, показанный в начале этого поста (и код для генерации соли, в этом отношении), чтобы сделать его многоразовым и совместимым с $ form-> bindRequest ( ) подход, если вам нужна как форма регистрации пользователя, так и форма редактирования профиля пользователя и т. д.