【问题标题】:Symfony2 passing parameters to twigSymfony2 将参数传递给 twig
【发布时间】:2013-11-28 10:54:10
【问题描述】:

我正在使用 Symfony 2,我想从我的控制器向我的 twig 模板传递一个简单的字符串,然后在我的模板上使用它来描述用户角色。 控制器代码类似于:

public function modify_user_asAction(Request $request, $username)
{
    $stringtopass="admin";
    $um = $this->get('fos_user.user_manager');
    $user = $um->findUserByUsername($username);
    if($user == null){
        //error page here..
    }
    $form = $this->createForm(new UserForm(), $user);
    $form->handleRequest($request);
    if ($form->isValid()) {     
        $um->updateUser($user);
        return $this->redirect($this->generateUrl('acme_query_success'));
    }
     return $this->render('AcmeUserBundle:Default:modifyuserform.html.twig', array(
        'form' => $form->createView(),
    ));
}

我想在generateUrl 中传递$stringtopass(如果可能的话)。 我在网上找不到任何东西。 谢谢

【问题讨论】:

  • 能否请您提供整个操作,或者至少提供退货声明?
  • 我不知道你真正想要做什么,但如果你依靠客户端输入来猜测用户角色,这听起来像是一个不错的安全问题
  • 如果用户尝试仅访问 ^/admin 或 ^/sadmin 并且他没有以 admin 或 super_admin 身份登录,他将被重定向到登录页面

标签: symfony parameters twig


【解决方案1】:

你快到了!

API:generateUrl

基本上,只需将array 作为第二个参数传递给generateUrl

return $this->redirect($this->generateUrl('acme_query_success', array('stringToPass' => $stringtopass)));

另外,@Brewal 有一个非常有效的观点。注意不要传递一些敏感数据或对控制器的操作进行不受限制的访问。你可能弊大于利...

更新:

public function acmeQuerySuccessAction(){
    // ... action's logic
    $stringToPass = $this->getRequest()->query->get('stringToPass');
    // .....

    return array(
          'stringToPass' => $stringToPass,
          // all other elements that you would normally return
    );
}  

【讨论】:

  • 谢谢!以及如何在树枝文件中使用它?
  • 那完全是另一回事。当您重定向到acme_query_success 时,它会调用另一个操作(我们称之为acmeQuerySuccessAction())。在那里,您将请求数据单独转发到twig。用适当的样本更新我的答案...
猜你喜欢
  • 2011-08-29
  • 1970-01-01
  • 2021-03-22
  • 2015-04-07
  • 2013-09-27
  • 1970-01-01
  • 1970-01-01
  • 2019-05-16
  • 1970-01-01
相关资源
最近更新 更多