2016-08-24 4 views
-5

Ich mache eine Webanwendung mit symfony3 und ich brauche eine Möglichkeit, die Benutzer zu bearbeiten und ihr Profil zu aktualisieren. Ich habe FosUserBundle verwendet, um den Zugriff der Benutzer zu verwalten, aber ich weiß nicht, welche Schritte ich ergreifen muss, um mein Problem zu lösen. Hat jemand Ideen oder nützliche Links zum Teilen? dankeBenutzerprofil aktualisieren symfony3 using fosuserbundle

+1

Schauen Sie sich einfach ihre [GitHub-Seite] an (https://github.com/FriendsOfSymfony/FOSUserBundle), dort finden Sie alles, was Sie brauchen. Tipp: Schau dir die Profilseite an. Allgemeiner Hinweis: Sie sind neu in StackOverflow, also schauen Sie sich bitte die Seite [How-to-ask] (http://stackoverflow.com/help/how-to-ask) an. Ihre Frage ist off-topic, weil es darum geht, ein Tool oder eine Seite eines Drittanbieters zu finden, sodass es höchstwahrscheinlich geschlossen wird. – KhorneHoly

+0

Stellen Sie eine gute Frage, erhalten Sie eine gute Antwort. –

+0

Wenn Sie Waschmaschine kaufen, fragen Sie, wie man es im Internet benutzt? Lesen Sie die Dokumentation zum Produkt. – malcolm

Antwort

-1

Ich löste das Problem. Ja, es ist meine erste Frage zu Stackoverflow und ich lerne.
hier ist mein Code:

dogController.php

 /** 
    * @Route("/profile/edit", name= "edit_profile" ) 
    */ 

    public function edit_profileAction(Request $request) 
    { 

     $user = $this->getUser(); 

     $form = $this->createForm(UserType::class, $user); 

     $form->handleRequest($request); 

     if ($form->isValid()) { 

      /** @var $userManager \FOS\UserBundle\Model\UserManagerInterface */ 

      $userManager = $this->get('fos_user.user_manager'); 

      $event = new FormEvent($form, $request); 

      $dispatcher = $this->get('event_dispatcher'); 

      $dispatcher->dispatch(FOSUserEvents::PROFILE_EDIT_SUCCESS, $event); 

      $userManager->updateUser($user); 

      if (null === $response = $event->getResponse()) { 

       //$url = $this->generateUrl('fos_user_profile_show'); 

       $url = $this->generateUrl('edit_profile'); 
       $response = new RedirectResponse($url); 

      } 
      $dispatcher->dispatch(FOSUserEvents::PROFILE_EDIT_COMPLETED, new FilterUserResponseEvent($user, $request, $response)); 

      $this->get('session')->getFlashBag()->add(
              'notice', 
              'Profile Updated!' 
       ); 

      return $response; 
     } 


     return $this->render('dog/edit_profile.html.twig',array('form'=>$form->createView())); 
    } 

UserType.php

<?php 

    namespace AppBundle\Form; 

    use Symfony\Component\Form\AbstractType; 
    use Symfony\Component\Form\FormBuilderInterface; 
    use Symfony\Component\OptionsResolver\OptionsResolverInterface; 
    use Vich\UploaderBundle\Form\Type\VichImageType; 
    use Symfony\Component\HttpFoundation\File\File; 
    use Symfony\Component\Form\Extension\Core\Type\FileType; 


    class UserType extends AbstractType{ 

     public function buildForm(FormBuilderInterface $builder, array $options){ 

      $builder->add('username') 
        ->add('name') 
        ->add('surname') 
        ->add('email') 
        ->add('telephone') 
        ->add('imageFile', FileType::Class); 


     } 

     public function setDefaultOptions(OptionsResolverInterface $resolver){ 

      $resolver->setDefaults(array('data_class' => 'AppBundle\Entity\User')); 
     } 

     public function getName() { 

      return 'appBundle_user'; 
     }`enter code here` 
    } 

edit_profile.html.twig

<header> 
    <div class="container"> 
    <div class="row"> 
     <div class="col-lg-12"> 
      <h2 class="name">Edit Profile</h2> 
      <div class="row" > 
      <div class="col-lg-12"> 

       <div class="input_width" > 

        {% for flashMessage in app.session.flashbag.get('notice') %} 

        <div class="alert alert-success alert"> 
         {{ flashMessage }} 
        </div> 

        {% endfor %} 

        {{form_start(form, {'attr': {'class': 'form-horizontal'}})}} 
        {{ form_errors(form) }} 

         <div class="form-group"> 
        {{ form_label(form.username) }} 
        {{ form_errors(form.username) }} 
        {{ form_widget(form.username , {'attr': {'class': 'form-control'}}) }} 
        </div> 

         <div class="form-group"> 
        {{ form_label(form.email) }} 
        {{ form_errors(form.email) }} 
        {{ form_widget(form.email , {'attr': {'class': 'form-control'}}) }} 
        </div> 



        <div class="form-group"> 
        {{ form_label(form.name) }} 
        {{ form_errors(form.name) }} 
        {{ form_widget(form.name , {'attr': {'class': 'form-control'}}) }} 
        </div> 

        <div class="form-group"> 

        {{ form_label(form.surname) }} 
        {{ form_errors(form.surname) }} 
        {{ form_widget(form.surname, {'attr': {'class': 'form-control'}}) }} 
        </div> 

        <div class="form-group"> 

        {{ form_label(form.telephone) }} 
        {{ form_errors(form.telephone) }} 
        {{ form_widget(form.telephone, {'attr': {'class': 'form-control'}}) }} 
        </div> 

        <div class="form-group"> 

        {{ form_label(form.imageFile) }} 
        {{ form_errors(form.imageFile) }} 
        {{ form_widget(form.imageFile) }} 
        </div> 

        <input type="submit" value="Submit" class="btn btn-default bluInput " /> 
        {{form_end(form)}} 

       </div> 
      </div> 
      </div> 
     </div> 
    </div> 
    </div> 
</header> 

Grundsätzlich ich schaffen musste Formulartypenklasse mit meinem Ent verbunden Dann verwenden Sie es in meinem Controller so lange wie der Benutzer-Manager des Fos-Benutzerpakets.

Verwandte Themen