Symfony 2 编辑操作不填充表单字段

Symfony 2 Edit Action not populating form fields

我正在尝试为用户地址实体创建编辑操作,但无论何时加载页面,它似乎都不会加载相关数据。下面是我的控制器和视图的代码。

配置文件控制器:

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 中,您可以看到我从实体存储库调用一个方法,这是数组 $address:

的 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)

正如您所看到的,我已经从数据库中获取了正确的数据,我已经按照将数据绑定到表单对象的说明进行操作,它只是不会持续存在于视图中。我尝试了多种方法,但似乎无法正常工作。任何 advice/help 将不胜感激。

谢谢,

肖恩

当表单可能需要单个对象时,您正在从存储库中获取一个二维 $address 数组。