2014-12-31 62 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')]); 
相关问题