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 %}
希望我能帮到你。
如果用户在她的数据库中有特定值,我想在网页上提供特定的树枝输入表单 $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 %}
希望我能帮到你。