自分のサイトに role_user としてログインし、プロファイルを編集しようとすると、DB でログインを何かのログインとして変更しようとすると、「このログインは既に使用されています」というエラーが表示されますが、更新するとページに新しいログインとして承認されていることがわかりますが、良くありません
私はこのフォームビルダーを持っています:
namespace User\WalletBundle\Form;
use Doctrine\ORM\EntityRepository;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
class EditForm extends AbstractType {
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder->add('username', null, array('attr' => array('placeholder' => 'Login')));
$builder->add('email', 'email', array('attr' => array('placeholder' => 'E-mail')));
$builder->add('mobile', 'number', array('attr' => array('placeholder' => 'Mobile','maxlength' => 10)));
$builder->add('password', 'repeated', array(
'type' => 'password',
'invalid_message' => 'Пароли не совпадают',
'options' => array('label'=>'','required' => false, 'always_empty' => false)));
$builder->add('old_pass','password',array('attr' => array('placeholder' => 'Old pass')));
}
public function getName() {
return 'edit_form';
}
public function getDefaultOptions(array $options) {
return array(
'data_class' => 'User\WalletBundle\Entity\User',
);
}
}
このシステムがどのように機能するか (セキュリティ) がよくわからないと思います。私の問題について読むことができるかもしれません。リンクを取得してください。どうもありがとう
私の英語について非常に申し訳ありません
私のコントローラーでは、テストのために、このコードを書きます
/**
* @Secure(roles="ROLE_USER")
* @Template("UserWalletBundle:Wallet:settings.html.twig")
*/
public function settingsAction(Request $request) {
$user_edit = $this->getDoctrine()->getRepository('UserWalletBundle:User')->findOneById($this->get('security.context')->getToken()->getUser()->getId());
$form = $this->createForm(new EditForm(), $user_edit);
if ($request->getMethod() == 'POST') {
$form->bindRequest($request);
// Now i have login Alice, and i want change my profile, set login Test, but Test is created some user in DB, ofcours i see error This login is already used
if ($form->isValid()) {
//Do anything
} else {
// There i see error This login is already used
return array('form' => $form->createView());
}
} else
return array('form' => $form->createView());
}
そして今、ページを更新すると、ユーザー名(ログイン)「テスト」として認証されていることがわかります。なぜ、どのようにこの問題を解決できますか?