2013-11-28 72 views
0

我與Symfony的2個工作,我想從我的控制器傳遞給我的樹枝模板一個簡單的字符串,然後用我的模板descriminate用戶角色。 控制器代碼有一樣的東西:Symfony2的參數傳遞到小枝

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(), 
    )); 
} 

我想通過$stringtopassgenerateUrl(如果可能的話)。 我在網上找不到任何東西。 感謝

+0

能否請您提供整套動作,或者至少return語句? – Brewal

+0

我不知道你真的正在嘗試做的,但如果你依賴於一個客戶端輸入猜測用戶的角色,這聽起來像一個很好的安全問題 – Brewal

+0

如果用戶試圖訪問^/admin或^/SADMIN只有和他沒有登錄爲管理員或超級管理員,他是會被重定向到登錄頁面 – offman

回答

1

你就要成功了!

API:generateUrl

基本上,只要傳遞一個array作爲第二參數去generateUrl

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

而且也@Brewal有一個非常有效的有道理。小心不要傳遞一些敏感數據或不受限制地訪問該控制器的操作。你可以這樣做弊大於利...

UPDATE:

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

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

謝謝!我怎樣才能在樹枝文件中使用它? – offman

+0

這是另一回事。當您重定向到'acme_query_success'它調用另一個行動(我們稱之爲'acmeQuerySuccessAction()')。在那裏你分別將請求數據轉發給'twig'。更新我的答案與適當的樣本... –

+0

謝謝你的人真棒! – offman