2017-09-26 10 views
0

Laravel의 모범 사례에 대한 질문이 있습니다.Laravel : 블레이드 템플릿의 개체 무시

 @foreach ($products as $product) 
      @if(is_null($product->getMedia()->first())) 
       @continue 
      @endif 
      <div class="col-md-4"> 
       //display image and product informations 
      </div> 
     @endforeach 

내 질문은 : 이 맞는 경우라면 내 모든 제품을 표시하고 내 제품 내 루프에서 이미지가있는 경우 테스트 블레이드 페이지가, 나는 그것을 무시?

또는 컨트롤러에 이미지가없는 제품을 무시합니까?

감사합니다.

+0

제품 모델을 공유해 주실 수 있습니까? –

+0

더 나은 논리를 PHP에서하고 블레이드에 최종 출력을 보내십시오 – delboy1978uk

답변

2

이미지가없는 제품을 "유효하지 않음"/ "비활성"으로 간주할지 또는이 특정보기에 표시하지 않을지 여부에 따라 다릅니다.

컨트롤러가 "특정 조건과 일치하는 모든 제품 가져 오기"와 같은 비즈니스 요구 사항을 정의하고 있습니다. 이미지가있는 제품이 판매되지 않아야하므로 "비즈니스에 필요한 이미지"가 비즈니스 요구 사항의 일부인 경우 논리가 컨트롤러에 저장됩니다.

보기가 "예쁜 격자로 제품 정렬"과 같은 특정 프레젠테이션을 정의합니다. "이미지가 있음"이이 레이아웃에서 작동하는 데 필요한 조건 일 경우 여기를 건너 뛰는 것이 합리적 일 수 있습니다. 이 제품 판매해야하는 경우를 반환하는 컨트롤러에 의해 암시로 고객이 볼 수없는 것을 의미 숨기고,

  • :

    그러나, 뷰에서 완전히 건너 뛰는 제품은 일부 바람직하지 않은 결과를 초래할 수 있습니다 그들.

  • 페이지 매기기가 있거나 결과의 총 수가 발견되면 사용자가 건너 뛴 제품을 다룰 때까지 사용자가 실제로 볼 수있는 제품 수와 일치하지 않습니다. 당신은 그냥하지 눈에 띄게, 스킵 제품이 실제로 더 아래 목록에 표시됩니다 "하이라이트"어떤 종류의를 구축하는 경우

따라서 가장 적합합니다.

1

귀하의 미디어에 따라 다릅니다. 제품과 동일한 테이블이라면 괜찮습니다. 그러나 관계라면 컨트롤러에서 필터링하는 것이 좋습니다.

+0

이 대답 내 질문. 감사. 분명히 컨트롤러의 로직을 수행하십시오. 오늘 피곤하다고 생각해. –