ओवरराइड किए बिना Symfony2 पासवर्ड रीसेट करें मैं उपयोगकर्ता फॉर्म को रीसेट करने वाला एक फॉर्म बनाने की कोशिश कर रहा हूं। मैं FOSUserBundle उपयोग कर रहा हूँ उपयोगकर्ताओं को प्रबंधित करने के लिए, लेकिन मैं कुछ वास्तुकला कारणोंFOSUser
तो मैं पासवर्ड
पुनर्स्थापित करने के लिए PasswordResettingType.php
अपने ही प्रकार और नियंत्रक बनाने का निर्णय लिया की वजह से FOSUser नियंत्रक को रीसेट ओवरराइड करने के लिए नहीं करना चाहते हैंpublic function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('plainPassword', RepeatedType::class, array(
'type' => PasswordType::class,
'attr' => ['class' => 'form-group has-feedback'],
'first_options' => array('label' => false,
'attr' => ['placeholder' => 'New Password']
),
'second_options' => array('label' => false,
'attr' => ['placeholder' => 'Repeat Password']),
'invalid_message' => 'Passwords don't match',
));
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'CoreBundle\Entity\User',
'csrf_token_id' => 'resetting'
));
}
नियंत्रक रीसेट किया जा रहा
/**
* @Route("/reset/{token}", name="api_resetting_reset")
*/
public function resetAction(Request $request, $token)
{
$userManager = $this->get('fos_user.user_manager');
$user = $userManager->findUserByConfirmationToken($token);
if (null === $user) {
return $this->render('APIBundle:Resetting:error.html.twig');
}
$form = $this->createForm(PasswordResettingType::class, $user);
$form->handleRequest($request);
if ($form->isValid()) {
$user->setConfirmationToken(null);
$user->setPasswordRequestedAt(null);
$user->setPlainPassword($form["plainPassword"]->getData());
$userManager->updateUser($user);
return $this->redirectToRoute('api_resetting_success');
}
return $this->render('APIBundle:Resetting:reset.html.twig', array(
'token' => $token,
'form' => $form->createView()
));
}
reset.html.twig
{{ form_start(form) }}
{% for passwordField in form.plainPassword %}
<div class="form-group has-feedback">
{{ form_widget(passwordField, { 'attr': {'class': 'form-control'} }) }}
<span class="show">show</span>
{{ form_errors(passwordField) }}
</div>
{% endfor %}
<input type="submit" class="btn" value="Submit" />
{{ form_end(form) }}
लेकिन जब मैं फ़ॉर्म सबमिट करेंगे, नया पासवर्ड सेट नहीं है, ConfirmationToken और PasswordRequestedAt शून्य पर सेट नहीं हैं।
$user->setConfirmationToken(NULL);
$user->setPasswordRequestedAt(NULL);
$user->setPlainPassword(NULL);
मुझे एक बेवकूफ सवाल पूछना चाहिए, क्योंकि व्यक्तिगत रूप से मैं इस तरह के मुद्दे पर ढेर कर सकता हूं: क्या आप सुनिश्चित हैं कि आप $ form-> isValid() = true है? इस कोड के लिए काम करने के लिए कोई अन्य कारण नहीं है। – Danny
नहीं, यह बेवकूफ सवाल नहीं है :) और हाँ, मैंने इसे चेक किया है और मुझे परेशान है कि कोड अभी भी काम नहीं करता है। – blahblah
क्या आप अपनी लॉग फ़ाइल में क्या देखने जा रहे हैं? –