2017-09-14 5 views
0

배열을 실행하고 각 범위의 if 문을 사용하여 일치하는 수치 만 리턴하도록 twig/php에 함수를 작성했습니다. 나는 이것을 10 번 복제해야하고 가장 좋은 방법이 무엇인지 궁금해하고 있습니다. (즉, 짧은 손이 있거나 이걸 가지고 있어야합니다).for 루프를 중단하고 각 변수 라운드가 반향 된 후 리턴합니다.

 <p>Ceiling</p> 

     {% for category in categories|sort %} 

      {% if category.range == "Ceiling" %} 
       <a href="{{ category.href }}"><li class="SubRange">{{ category.name }}</li></a> 
      {% endif %} 

     {% endfor %} 

     <hr> 

     <p>Lamps</p> 

     {% for category in categories|sort %} 

      {% if category.range == "Lamps" %} 
       <a href="{{ category.href }}"><li class="SubRange">{{ category.name }}</li></a> 
      {% endif %} 

     {% endfor %} 

     <hr> 

이 예제의 범위는 천장 및 램프로 범위에서만 인쇄됩니다.

컨트롤러는

  $data['categories'][] = array(
       'range' => $ProductRange, 
       'name' => $result['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''), 
       'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '_' . $result['category_id'] . $url) 
      ); 
+0

'$ ProductRange'는 어디에 설정되어 있습니까? – Ice76

답변

0

나는 두 번 배열을 통해 반복 피하려고 - 그것은 일반적으로 당신이 제대로 정보를 구성하지 않았거나 주변에 충분한 처음을하지 않았 음을 의미합니다. 귀하의 경우, 템플릿에 정보를 보내기 전에 범주를 램프 및 천장으로 정렬 할 수 있습니다. 각 루프가 실행되어 모든 것을 인쇄 할 것이므로 변수를 범주 변수에 넣을 때 정렬하면 런타임이 절반으로 줄어 듭니다.

[램프] 및 범주 [ '천장']에서 배열을 잡고 배열을 실행할 배열 키로 '램프'와 '천장'을 만들 수도 있습니다. 그런 다음 비어 있지 않은 경우, 당신은 또한 범주를 표시 할 수 있습니다, 빈에

+0

그게 내가 한거야. 나는 내 컨트롤러를 보여주기 위해 그것을 편집했다. –

+0

@Phpuser 나는 당신이 당신의 데이터를 구조화한다면 여전히 두 개의 루프를 돌릴 수 있다는 것을 의미했다. 각 카테고리에 대해 하나씩, 매번 모든 것을 실행하지 않아야합니다. – Ice76

0

는 @의 Ice76 응답에 eloborate하려면 적절한 메시지,

PHP

<?php 
    $temp = fetchYourCategories(); 
    $categories_per_range = []; 

    foreach($temp as $category) { 
     if (!isset($categories[$category->range])) $categories[$category->range] = []; 
     $categories[$category->range][] = $category; 
    } 

    echo $twig->render('template.twig', [ 'categories_per_range' => $categories_per_range, ]); 

를 표시 나뭇 가지

{% for range, categories in categories_per_range %} 
    <h1>{{ range }}</h1> 
    {% for category in categories %} 
     <a href="{{ category.href }}"><li class="SubRange">{{ category.name }}</li></a> 
    {% endfor %}   
    <hr /> 
{% endfor %} 
+0

이 옵션은 불행히도 작동하지 않습니다. –

+0

제품 범위가 카테고리로 반복되고 있습니다. –

+0

컨트롤러를 포함하도록 편집했습니다. –