온라인 저장소를 구축하기 위해 Laravel을 사용해야하는지 여부를 논의하고 있습니다.Laravel 4 구현 방법 부분 뷰 - 데이터를 부분 뷰로 바인딩
요구 사항 - 메인 영역에 제품 목록이있는 사이드 바에 장바구니를 표시하십시오. 데이터를 부분 뷰에 바인딩해야합니다.
부분보기를 표시하기 위해 PartialController
을 만들었습니다.
class PartialController extends BaseController {
public function showCartSummary()
{
$cartItems = Cart::all();
return View::make('partials.cartsummary', array(
'cart' => $cartItems,
));
}
public function showProducts()
{
$products = Products::all();
return View::make('partials.products', array(
'products' => $products,
));
}
}
나는 문제는 데이터가 이러한 뷰에 전달되지 않는 것을 부분 뷰에
Shop.Index.Blade.php
@extends('master')
@section('content')
@include('partials.cart')
@stop
@section('side1')
@include('partials.products')
@stop
당겨 게 인덱스보기를 작성한 partials.cart 및 partials.products는 자체 컨트롤러에서 호출되지 않기 때문입니다.
제 해결 방법은 ShopController
내의 데이터베이스를 쿼리하고 shop.index
보기로 전달하는 것입니다.
ShopController.php
나는 또한 ShopController 물론
public function showIndex()
{
$cartItems = Cart::all();
$products = Product::all();
return View::make('shop.index', array(
'cartItems' => $cartItems,
'products' => $products
));
}
을 만들었습니다, 지금 DB 쿼리를 반복하고 나는 모든 컨트롤러에서 동일한 쿼리를 반복하고 싶지 않아 메소드가 여러 개 사용됩니다.
가장 좋은 방법은 무엇입니까?
NB :이 질문의 목적으로 단순화 된 데이터베이스 호출을 사용했습니다. & 코드에 하나 또는 두 개의 오타/구문 오류가있을 수 있지만이 질문에는 중요하지 않습니다.
반복이
: 내가 viewmodels/발표자를 만들view composers
을 사용할 수있는 것으로 나타났습니다
. 다음 filters.php
App::before(function($request)
{
View::composer('partials.products', 'ProductComposer');
View::composer('partials.cartitems', 'CartComposer');
});
class ProductComposer {
public function compose($view)
{
$view->with('products', Product::all());
}
}
class CartComposer {
public function compose($view)
{
$view->with('cartitems', Cart::all());
}
}
filters.php를 수정, 는 먼저 I는 PartialController.php 도랑 : 지금
shop.blade.php
@extends('master')
@section('content')
@include('partials.products')
@stop
@section('side1')
@include('partials.cartitems')
@stop
는 일부 전망에 데이터를 전달할
이것은 여전히 매우 혼란 스럽습니다. 필자의 모든 부분적인 견해를 filters.php 파일에 담고 싶지는 않습니다 ...이 작업을 수행하는 적절한/공식적인 방법이 있습니까? 어떤예요?
을 iteration2가 올바른지 할 수 있습니다. 이 클래스들을 자신의 파일로 만들고 네임 스페이스에 포함시킬 수 있습니다. 그것은 더 깨끗할 것입니다. – itachi
왜 당신은 (삐걱 거리는) 장바구니를 재발 명하고 싶습니까? 재미있는 물건들을 가지고 다닐 수 있도록 충분한 무료 테스트를 거친 옵션이 있습니다. – Mawg