2015-05-03 47 views
0

我试图为用户地址实体创建一个编辑动作,但是无论何时加载页面,它似乎都不会加载关联的数据。下面是我的控制器和视图的代码。Symfony 2编辑动作没有填充表单域

档案控制器:

public function addressEditAction($id) { 
     $user = $this->getUser(); 
     if (!is_object($user) || $user instanceof UserInterface) { 
      throw new AccessDeniedException('This user does not have access to this section.'); 
     } 

     if ($this->container->get('security.context')->isGranted('IS_AUTHENTICATED_FULLY')) { 
      $em = $this->getDoctrine()->getEntityManager(); 
      $address = $em->getRepository('SCWDesignsBundle:UserAddresses')->getAddressById($user->getId(), $id); 
      if (!$address) { 
       throw new NotFoundHttpException(sprintf('Could not find address id: "%s"', $id)); 
      } 

      $form = $this->createForm(new UserAddressesFormType(), $address); 

      $request = $this->getRequest(); 
      if ($request->getMethod() == 'POST') { 
       $form->bind($request); 
       if ($form->isValid()) { 
        $utilites = new Utilities; 
        $address->setPhone($utilites->stripPhoneNumbers($address->getPhone())); 
        $em->persist($address); 
        $em->flush(); 

        return $this->redirect($this->generateUrl('fos_user_profile_show')); 
       } 
      } 
     } 

     return $this->render('SCWDesignsBundle:Profile\Address:new.html.twig', array(
      'active_page' => 'profile', 
      'form' => $form->createView() 
     )); 
    } 

查看:

{% trans_default_domain 'SCWDesignsBundle' %} 

{% block modal_block %} 
<div class="item-box"> 
    <h2>Address Details</h2> 

    {% include 'SCWDesignsBundle:Default:form_errors.html.twig' %} 

    <form action="{{ path('scw_designs_address_add') }}" {{ form_enctype(form) }} method="POST" class="scw_designs_address_new clearfix"> 
     <div class="address-new"> 
      <div class="form-item"> 
       <div class="form-label"> 
        <label for="first-name">{{ 'profile.first_name'|trans }}: <span class="required">*</span></label> 
       </div> 
       <div class="form-field"> 
        {{ form_widget(form.first_name) }} 
       </div>   
      </div> 

      <div class="form-item"> 
       <div class="form-label"> 
        <label for="last-name">{{ 'profile.last_name'|trans }}: <span class="required">*</span></label> 
       </div> 
       <div class="form-field"> 
        {{ form_widget(form.last_name) }} 
       </div> 
      </div> 

      <div class="form-item"> 
       <div class="form-label"> 
        <label for="address">{{ 'profile.address'|trans }}: <span class="required">*</span></label> 
       </div> 
       <div class="form-field"> 
        {{ form_widget(form.address_one) }} 
        {{ form_widget(form.address_two) }} 
       </div>    
      </div> 

      <div class="form-item"> 
       <div class="form-label"> 
        <label for="city">{{ 'profile.city'|trans }}: <span class="required">*</span></label> 
       </div> 
       <div class="form-field"> 
        {{ form_widget(form.city) }} 
       </div> 
      </div> 

      <div class="form-item"> 
       <div class="form-label"> 
        <label for="country">{{ 'profile.country'|trans }}: <span class="required">*</span></label> 
       </div> 
       <div class="form-field"> 
        {{ form_widget(form.country) }} 
       </div> 
      </div> 

      <div class="form-item"> 
       <div class="form-label"> 
        <label for="state">{{ 'profile.state'|trans }}: <span class="required">*</span></label> 
       </div> 
       <div class="form-field"> 
        {{ form_widget(form.state) }} 
       </div> 
      </div> 

      <div class="form-item"> 
       <div class="form-label"> 
        <label for="zipcode">{{ 'profile.zipcode'|trans }}: <span class="required">*</span></label> 
       </div> 
       <div class="form-field"> 
        {{ form_widget(form.zipcode, { 'attr': { 'class': 'zipcodeUS' }}) }} 
       </div> 
      </div> 

      <div class="form-item"> 
       <div class="form-label"> 
        <label for="phone">{{ 'profile.phone'|trans }}: <span class="required">*</span></label> 
       </div> 
       <div class="form-field"> 
        {{ form_widget(form.phone, { 'attr': { 'class': 'phoneUS' }}) }} 
       </div> 
      </div> 
     </div> 

     <div class="modal-button-wrapper"> 
      {{ form_widget(form._token) }} 
      <button type="submit" class="btn-submit primary-button">Save Changes</button> 
     </div> 
    </form> 
</div> 
{% endblock %} 

在ProfileController可你能看见我打电话从实体程序存储库的方法,这里的数组$地址的var_dump:

$地址:

array (size=1) 
    0 => 
    array (size=11) 
    'id' => string '4' (length=1) 
    'firstName' => string 'Bruce' (length=5) 
    'lastName' => string 'Wayne' (length=5) 
    'addressOne' => string '123 Gotham Lane' (length=15) 
    'addressTwo' => null 
    'city' => string 'Gotham' (length=6) 
    'country' => string 'USA' (length=3) 
    'zipcode' => string '51478' (length=5) 
    'phone' => string '3344796239' (length=10) 
    'code' => string 'NH' (length=2) 
    'state' => string 'New Hampshire' (length=13) 

所以你可以看到我已经从数据库中获得了正确的数据,我遵循了将数据绑定到表单对象的说明,它只是不会保留到视图中。我尝试过很多东西,但似乎无法让它工作。任何建议/帮助将不胜感激。

感谢,

肖恩

回答

0

您从资源库中得到一个二维数组$address窗体时可能希望一个对象。

+0

感谢您的回复,我今晚会看看返回的价值! –

+0

我不敢相信这是真正的问题......非常感谢。 –