2012-10-04 2 views
2

밉스ache는 부분적인 부분을 허용하고, 예를 들어 Smarty와 비교하여 상대적으로 가벼우므로 중대하다고 생각합니다. Mustache 사용에 대한 나의 생각은 UI 라이브러리를 구성하는 부분 집합을 정의하는 것입니다. 그 부분 데이터를 전달하고 스테로이드에 html 요소를 사용하는 것처럼 사용하십시오.PHP - 루프 내의 콧수염 부분들

부분의 예는 목록 요소 (시각적)입니다. 마크 업 시점에서 그 요소는 20 줄 HTML 블록으로 정의됩니다. 루프에서 그 부분을 사용하고 싶거나 독립적으로 사용하고 싶을 수도 있습니다. 내가 포함 된 목록을 작성하려면

부분 언급,이 같은 할 것 : 몇 후, 이제

<div> 
    <ul> 
    {{#another_array}} 
    <li>{{name}}</li> 
    {{>#another_array}} 
    </ul> 
</div> 

을 :

{{#my_list_elems}} 
... Maybe some HTML code 
{{> my_partial 
{{/my_list_elems}} 

하는의는 my_partial은 다음과 같습니다 가정 해 봅시다

{{> head}} 
{{> header}} 
<div>Some static HTML</div> 
... More code 
{{#some_array}} 
{{> my_partial}} 
{{/some_array}} 
{{> footer}} 

문제 :이를 알아 내려고 노력의 시간, 내 주요 템플릿은 더 많거나 적은 같은 외모웬일인지, 이것은 나를 위해 작동하지 않습니다. 개별적으로 부분 렌더링을 시도했지만 작동합니다. 그래도 배열? Meh.

또한 나는 힘든 시간을 알기 위해 노력하고있다. 변수를 어떻게 처리 할 것인가? 순간, 나는 이런 식으로 렌더링 해요 : PHP 코드 및 부분 예를 함께 작동하는 것은 아닙니다 것을

$template = $this->mustache->loadTemplate('template'); 
$partials['my_partial'] = $this->mustache->loadPartial('my_partial'); 
$data['my_partial_arr'] = $this->getPartialData(); 

echo $template->render($data, $partials); 

주, 그들은 그냥, 예입니다.

질문 :이 기능이 지원됩니까? 그렇다면 내가 뭘 잘못하고 있니? 어쩌면 내 PHP 배열에 적절한 형식이 없을 수 있습니까? 배열/루프를 부분적으로는 낮은 레벨에서 사용할 수는 있지만, 그 자체로 partial을 사용하고자 할 때는 추한 것입니다 (하나의 elem 배열에서 데이터를 래핑하므로 데이터를 래핑합니다).

답변

3

그래서 {{> head }}, {{> header }}{{> footer }} 부분은 작동하지만 {{> my_partial }}은 작동하지 않습니까? 파일 시스템 부분 로더를 사용하고 있거나 partial을 Mustache 생성자에 문자열로 전달하고 있습니까? 당신을 잡기 될 수

두 가지 :

  1. 콧수염이 배열 (my_partial_arr) "반복 가능한"될을 고려하지 않을 수 있습니다. Mustache.php 위키 has a bit more on that. array_values()을 통해 실행할 수 있으므로 섹션 컨텍스트로 사용되는 대신 루프 처리됩니다.

  2. 콧수염 템플리트의 부분 번호는 the render() call으로 전달할 수 없습니다.

    대부분의 경우 부분 인수를 두 번째 인수로 전달해도 문제가 발생하지 않습니다. 그 함수는 두 번째 인수를 취하지 않기 때문에 ... 어쨌든 loadPartial()을 통해 필요한 부분을로드합니다 .

+0

그래는, 다른 모든 나는 그것이 # 1의 생각 루프 부분 제외하고 잘 작동 - 그냥 테스트를 실행해야 다시 후속으로 될 것입니다. # 2에 대해 맞습니까? 얼마나 바보입니까? :) – Claudiu

+0

array_map()의 결과로 배열을 사용하고 있는데, 배열 (반환 값 : 해시가 아닌)을 잘못 반환했다고 가정합니다. 글쎄, 내가 틀렸어, array_unique() 호출의 결과 배열이기 때문에 array_map()에 전달한 두 번째 인수는 일부 인덱스를 건너 뛴다. 또 다른 롤은 건너 뛴다. 마음을 날려. 도와 주셔서 감사합니다. – Claudiu