2014-05-08 2 views
3

장바구니 아이템을 CommonController.HeaderLinks 액션에 의해 전달 된 모델 밖으로 가져 오는 HeaderLinks 부분 외부에 장바구니를 표시해야합니다. 장바구니 정보를 전달하는 액션으로 새로운 컨트롤러를 생성함으로써 우리 템플릿에서 사용자 정의 UI 요소를 가져올 수있었습니다. 지금 컨트롤러는 사용자 정의 플러그인 안에 있습니다. 다른 것들을 가지고 있습니다. 내가 볼때는 내가 두 가지 옵션이 있습니다NopCommerce에서 장바구니를 HeaderLinks 부분 외부에 표시하려면 새 컨트롤러를 추가해야합니까?

  • 는 플러그인 프로젝트에 컨트롤러를두고 사실과 살을 그 어떤 이유로 플러그인이 설치되어 있지 않은 경우 (. 즉, 새로운 디바이스에서 신선한 체크 아웃) 테마가 중단되어 사용자를 오류보기로 리디렉션 할 수 있습니다.

  • NopCommerce를 업그레이드하는 과정에 추가 단계를 추가하는 단점이있는 컨트롤러를 Nop.Web의 Controllers 폴더에 넣으십시오. 비슷한 문제가 발생하면 꽤 빨리 못 생길 수 있습니다.

제 질문은 컨트롤러를 배치하는 가장 좋은 장소는 어디입니까? 또는 장바구니에서이 작업을 수행하는 간단한 방법이 있습니까?

감사합니다, 호세

+0

당신 만의 쇼핑 카트 항목을 얻으려면 할 필요하면 알려주세요? –

답변

2

내가 당신에게 그것을 해결하기 위해 바로 가기 방법을 보여줍니다. 첫 번째 부분 (면도칼)보기 예를 들어 _CustomPartialView을 만든 다음

@using Nop.Core; 
@using Nop.Core.Infrastructure; 
@using Nop.Services.Orders; 

다음 다음 nopCommerce는 depency의 해결에 접근 이미 정적 방법이 becuase 쉽게 쇼핑 카트를 조회 할 수있는 부분보기 내부 상단에 다음 using이 추가 메서드 즉 EngineContext.Current.Resolve<T>(). 귀하의 경우 (장바구니의 경우) 다음과 같을 수 있습니다.

@{ 
     var shoppingCartEnabled = EngineContext.Current.Resolve<Nop.Services.Security.IPermissionService>() 
      .Authorize(Nop.Services.Security.StandardPermissionProvider.EnableShoppingCart); 
     var customer = EngineContext.Current.Resolve<IWorkContext>().CurrentCustomer; 

     int shoppingCartItems = 0; 
     if (customer.HasShoppingCartItems) 
     { 
      shoppingCartItems = customer.ShoppingCartItems 
       .Where(sci => sci.ShoppingCartType == Nop.Core.Domain.Orders.ShoppingCartType.ShoppingCart) 
       .LimitPerStore(EngineContext.Current.Resolve<IStoreContext>().CurrentStore.Id) 
       .ToList() 
       .GetTotalProducts(); 
     } 
     if (shoppingCartEnabled) 
     { 
      <div class="header-right pull-right wrap-cart hidden-xs "> 
       <div class="cart-top pull-right"> 
        <div id="cart"> 
         <span class="icon fa fa-shopping-cart"></span> 
         <div class="heading"> 
          <a href="@Url.RouteUrl("ShoppingCart")" class="ico-cart dropdown-toggle visible-md visible-lg" data-toggle="dropdown" data-hover="dropdown"> 
           <h4 class="cart-label"> 
            @T("ShoppingCart") 
            <span>@T("ShoppingCart.HeaderQuantity", shoppingCartItems)</span> 
           </h4> 
          </a> 
         </div> 
         <div class="content"> 
          @if (!String.IsNullOrWhiteSpace(Html.Action("FlyoutShoppingCart", "ShoppingCart").ToString())) 
          { 
           <li>@Html.Action("FlyoutShoppingCart", "ShoppingCart")</li> 
          } 
         </div> 

        </div> 
       </div> 
      </div> 
     } 
    } 

당신이 더 많은 도움이 :)