2011-08-30 2 views
2

CakePHP에서 <body>$content_for_layout이 포함 된 default.ctp가 프레임 HTML을 처리한다고 가정 해 보겠습니다. 대부분의 페이지는 mysite.com입니다. 그러나 mysite.com/account/ 내의보기가 탐색 바를 공유해야한다고 가정 해 봅시다. 계정 영역에서의 견해에 대한 적절한 접근 방법은 무엇입니까?CakePHP 탐색 표시 줄

A)를 탐색 모음 자신의 요소를 확인하고,이 요소는 각 뷰에 포함됩니다 :

<!-- settings.ctp, profile.ctp, myfiles.ctp ... --> 
<div id="account_area"> 
    <?php echo $this->element('account_nav'); } 
    <div>...</div> 
</div> 

내가 정말) A의 같이 할 것은 각 .ctp이 같은 포장 코드를 복제한다는 것입니다 (그러나 최소). 그래서 아마도 B 같은)은 더 :

B) 뷰 account/index.ctp를 작성하고 각 작업은 $section 변수를 설정하고 $this->render('/account/index')을, 자신의 요소에 각 화면을 배치 :

<!-- /views/account/index.ctp --> 
<div id="account_area"> 
    <div id="account_nav">...</div> 
    <?php echo $this->element("account/$section"); } 
</div> 

C) 뭔가 다른

감사합니다, 브라이언

답변

3

일반적으로이 방법은 옵션 A입니다. 하지만 $this->element('account_nav');을 레이아웃에 넣었습니다. 이렇게하면 모든보기에 코드를 넣지 않아도됩니다.

탐색에 구성 또는 사용 중지가 필요한 경우 레이아웃에 논리를 추가하고 평소대로 변수를보기에 전달하십시오. 그런 다음 필요한 경우 모든 작업에서 구성 할 수 있습니다.

결국 하이브리드 방식입니다. 하지만 내 경험으로 볼 때 가장 큰 유연성을 제공합니다.

+0

감사합니다. 옵션 B도 유효한 접근법으로 간주됩니까? 내 응용 프로그램에는 이러한 종류의 기능이 필요한 방식이 꽤 많이 있으며, 레이아웃 자체를 표현하는 데 많은 논리가 필요할 수도 있습니다. – Brian

+0

물론입니다. 그러나 IMO, 언제든지'render()'를 사용합니다. 더러운 느낌이 들었습니다. 설명에서 옵션 B가 더 많은 설정을 필요로하는 것 같았습니다. –

0

나는 매우은 CakePHP의 새로운 그래서 특정 혜택 A와 B가 가져올 수있는 모르겠어요,하지만 그것은 리 보인다 여러보기에서 동일한 탐색 바코드를 재사용하고 싶다면 (간단히 말해서) PHP의 include 함수를 사용하여 필수 .html 또는 .php 파일을 포함시킬 수 있습니까?

내 탐색 막대에 정확히 무엇이 들어가는가에 달렸다고 가정합니다. HTML 링크보다 더 복잡한 것이고 아이디어는 상당히 나 빠지게됩니다. :/

+0

기본 'include'/'require'를 사용하면 데이터 브리징 프레임 워크가 제공하는 데이터를 분리 할 수 ​​있습니다. CakePHP에서 * 요소 *를 사용하는 것이 올바른 방법입니다. –

관련 문제