2014-12-31 63 views
1

我有一個視圖編輯器,我正在使用它來計算所有在購物籃(這是我包含很多的部分)中創建的應用程序的變量。它本質上是一個更復雜的版本是:Laravel將Ajax與View Composer結合使用

public function compose($view) 
{ 
    $giftbox_total_pre = Giftbox::getTotal(); 
    $giftbox_items_total = number_format($giftbox_total_pre, 2); 

    $view->with(compact(
     'giftbox_items_total', 
    )); 
} 
在我的路線

然後我有:

View::composer(['layouts.bag', 'shop.basket', 'giftbox.basket'], 'Acme\Composers\BasketComposer'); 

但是,我只是將Ajax添加到我的應用程序,這將是一件好事,如果在請求之後,我可以從View Composer中獲取變量。有沒有辦法做到這一點?或者在這種情況下作曲家是錯誤的東西?

例如,要添加一個項目沒有Ajax,我有如下所示路線的控制器功能:

Route::post('/cart/add/{type?}/{quantity?}', '[email protected]'); 

和控制器:

public function addToCart($type='subscription', $quantity=1) 
{ 
    $product = Product::find(Input::get('id')); 
    $price = $product->box_price; 

    Cart::insert([ 
     'id' => $type . $product->id, 
     'table_id' => $product->id, 
     'name' => $product->name, 
     'price' => $price, 
     'quantity' => $quantity, 
     'cart_type' => $type, 
    ]); 

    return Redirect::back()->with('success', 'Added to cart!'); 
} 

首先,適當的,Laravel項目,所以我可能讓自己陷入一片混亂!我可以將Ajax提交到路線並且工作正常,但我無法弄清楚如何取回購物車的體面JSON數組。

+0

所以反應應該是全車加上'giftbox_items_total'喜歡你擁有了它在視圖作曲家作爲JSON? – lukasgeiter

+0

是的,但是如何訪問視圖編輯器中創建的變量? – Djave

回答

2

查看作曲家很好,但他們是意見。並且,當您返回JSON時,您不使用視圖,但是

return Response::json($data); 

這意味着不會顯示視圖。我將模型中的一個函數內部的作曲家的所有邏輯移開。 (它看起來像你那種已經與Giftbox::getTotal()

然後只是調用這個方法在控制器

$giftbox_items_total = Giftbox::getTotal(); 
+0

嗯,我想我有點和我的觀點作曲家混在一起了。我已經將整個函數移動到模型中,就像你說的,然後在我的作曲家中,我設置了一個'$ cart = CartModel :: get()',然後像'$ view-> with($車);'。謝謝! – Djave

-1
return Response::json(['html' => (string)View::make('cart.widget')]); 
相關問題