2014-04-30 35 views
0

的錯誤是:標識ID丟失雞尾酒的查詢\ RecipesBundle \實體\成分發送參數從阿賈克斯到控制器

所以,問題是,控制器不獲取參數ingredientId,我我嘗試過很多例子和教程,但沒有任何幫助。也許有一些容易發生的明顯的錯誤,我錯過了?我怎麼能從ajax函數傳遞參數給控制器?

回答

1

您正在創建一個新的空的Request對象,它顯然沒有當前請求的請求信息......它將爲空。

您可以將一個參數添加到addIngredientToUser,名爲$request,並使用type-hinting作爲Request $request。這樣Symfony2會給你實際的當前請求的請求對象填充正確的請求信息。

+0

和我應該在阿賈克斯發送作爲參數傳遞給控制器​​的參數$要求? – user2542809

+0

你不需要發送任何東西,'Request $ request','Post $ post'和一些其他的動作函數參數不必顯式傳遞,它們會被Symfony2自動填充。 –

+0

嘗試調試 - 通過使用var_dump($ _ GET,$ _POST,$ _REQUEST)檢查發佈的數據是否到達您的控制器;' –

0

工作代碼

public function addIngredientToUserAction(Request $request) { 
    $usr = $this->getUser(); 
    $id = $request->get('ingredient'); 
    $ingredientEntity = $this->getDoctrine()->getRepository('CocktailsRecipesBundle:Ingredient')->find($id); 
    $usr->addIngredient($ingredientEntity); 

    return $this->render('CocktailsRecipesBundle:Default:menu.html.twig'); 
} 

在對前面的回答您的評論,你犯了一個錯誤

$id = $request->get('id'); 
        ^^ - should be 'ingredient' 
+0

對不起,一個評論(現在刪除)建議更改var名稱,所以我做了。情況並非如此,即使使用成分,它仍然無法正常工作 – user2542809

+0

您可以在ajax()調用之前在JS中提醒(成分)嗎? – atn