Symfony 形式和循环与教义

Symfony form and loop with doctrine

我最近开始使用 Symfony。 我写了一个原则查询,我找到了我需要的值,但是当我想用 for 循环在表单的文本框中输入值时,我遇到了问题。 这是我的查询:

 $id_user = $user->getId();
        $query = $em->createQueryBuilder()
     ->select('ur','uu')   
     ->from('DtEcBundle:UserReferences', 'ur')
     ->innerJoin("ur.id_user","uu")
     ->where("ur.id_user = :id_user")
     ->setParameter("id_user",$id_user)
            ->getQuery();
            $userpyramid = $query->getResult();

现在我会在表格中插入我的值..

 $form = $this->get('form.factory')->createNamedBuilder('form', 'form')
        ->setMethod('POST')
        ->setAction($this->generateUrl('profilo_secondlevel'))
        ->add('idreferenced', 'text', array(
                'data' =>  '',
            ))
        ->add('save', 'submit', ['label' => 'Prova'])
        ->getForm();

如果我没有正确理解你的问题,那么你真的不需要任何表格![=2​​5=] 只需将 ArrayCollection 传递给 twig,对其进行迭代并显示您需要的所有值。之后,定义一个由 id 参数化的路由,您可以通过 link.

访问该路由

所以,基本上

//somewhere in controller
/**
 * @Route("/showSomethingByUserId/{uid}") <-- this could be also inserted into .yml file
 */
public function showSomethingByUserIdAction($uid)
{
    //implement some code to check $uid (just an example)
}

$userpyramid 传递给 twig

//somewhere in controller
public function extractAllIdUsersAction()
{
    [...]
    //should be better to create a repository for this
    $id_user = $user->getId();
    $query = $em->createQueryBuilder()
        ->select('ur','uu')   
        ->from('DtEcBundle:UserReferences', 'ur')
        ->innerJoin("ur.id_user","uu")
        ->where("ur.id_user = :id_user")
        ->setParameter("id_user",$id_user)
        ->getQuery();
    $userpyramid = $query->getResult();

    return $this->render('YourBundle:Folder:TwigName.html.twig, array(
        'userPyramid' => $userpyramid)
    );
}

然后在你的树枝里

{% for user in userpyramid %}
    {{ user.name }}
    {{ user.surname }}
    <a href="{{ path('showSomethingByUserId', {'uid': user.id}) }}">Access to user infos</a>
{% endfor %}

当然,您的名字可能会有所不同