symfony 用户访问网页的权限

symfony user permission to acces to a webpage

如果用户在她的数据库中有特定值,我想在网页上提供特定的树枝输入表单 $row['GameId'];

所以我尝试为这样的代码编写 if 语句

  $sqlo = $conn->query("SELECT * FROM user WHERE username='$tuser'");
  while ($row = $sqlo->fetch(PDO::FETCH_ASSOC))
  {
    $gid = $row['GameId'];

     if($gid == 0 ){
        $investor = $this->getDoctrine()->getRepository('AppBundle:User')->findOneBy(array('id' => $user->getId()));
        $MatchP = $investor->getMatchP();
        $form = $this->createForm(new TaskType(), $investor);

        $form->handleRequest($request);

        if ($form->isSubmitted() && $form->isValid()) {
             if(!empty($form->get('MatchP')->getData())){
                 $investor->setMatchP($form->get('MatchP')->getData());
             }
             else{
                 $investor->setMatchP($MatchP);
             }

             $em = $this->getDoctrine()->getManager();
             $em->persist($investor);
             $em->flush();

             $session = $this->getRequest()->getSession();


             /**
              * @Route("/siteblog_homepage/")
              */
            return $this->redirectToRoute('siteblog_homepage');
           }


     }
     else{

                ?> your value are not the right one to access to this page      <?

         }
     return $this->render('siteblogBundle:Default:index.html.twig', array(
         'form' => $form->createView(),
     ));        

    //}

}

但是我得到这个错误

Notice: Undefined variable: form

因为这一行

     'form' => $form->createView(),

那么如何以正确的方式保护此页面?

$form 仅在 if(true);

内部可用

下面的代码return:注意:未定义的变量:a

<?php

    if("2"=="1")
    {
        $a = "10";
    }
    echo $a;

?>

在 if 条件之外定义 $form。

首先,你需要从while循环块中跳出来,看看:

 return $this->render('siteblogBundle:Default:index.html.twig', array(
         'form' => $form->createView(),
     )); 

第二个:
您的代码可以 return 0 ,1 或多种形式,

while ($row = $sqlo->fetch(PDO::FETCH_ASSOC))
  {
    $gid = $row['GameId'];

     if($gid == 0 ){$form = $this->createForm(new TaskType(), $investor);
    /**/}

查看您创建表单的每条循环指令,因此您不知道最后要构建多少表单,因为我们不知道有多少 ($gid == 0)。
所以我 建议 你将这些所有形式渲染到你的视图中:

$forms = array();
array_push($forms,$form->createView());
return $this->render('siteblogBundle:Default:index.html.twig', array(
         'forms' => $forms));

通过这种方式,您将所有表单都推送到一个数组中,然后您需要做的就是将数组解析到您的 twig 文件中:

{% for form in forms %}
    {{dump(form)}}
    {{form(form)}}
  {% endfor %}

希望我能帮到你。