에 바닥 글, 헤더와 사이드 메뉴를 포함하는 현재 내 심포니 응용 프로그램에서 나는 모듈 헤더 다음 바닥 글 같은 템플릿 내 헤더 섹션을 처리 할 수있는 헤더 구성 요소, 가장 좋은 방법은 심포니
이는 IS를 생성 갈 가장 좋은 방법은?또한 일부 섹션에 포함되어있는 사이드 메뉴를 어떻게 처리해야할지 모르겠다. 내 범주 모듈의 구성 요소 사이드 메뉴를 만들고이를 사용하려면 슬롯을 사용해야합니까?
에 바닥 글, 헤더와 사이드 메뉴를 포함하는 현재 내 심포니 응용 프로그램에서 나는 모듈 헤더 다음 바닥 글 같은 템플릿 내 헤더 섹션을 처리 할 수있는 헤더 구성 요소, 가장 좋은 방법은 심포니
이는 IS를 생성 갈 가장 좋은 방법은?또한 일부 섹션에 포함되어있는 사이드 메뉴를 어떻게 처리해야할지 모르겠다. 내 범주 모듈의 구성 요소 사이드 메뉴를 만들고이를 사용하려면 슬롯을 사용해야합니까?
아마도 부분적인 것이 아마도 가장 좋은 방법 일 것입니다.
레이아웃에 드롭하려는 항목이 일부 작업에만 표시되고 모두는 표시되지 않는 경우 슬롯이 정말 유용합니다.
머리글과 바닥 글 모두에 대해 모듈을 만들었다 고하셨습니다. 나는 각각의 애플리케이션 템플릿 폴더에 부분적으로 생성하는 것을 선호한다.
/apps
/yourapp
/templates
_header.php
_footer.php
layout.php
범주 사이드 바는 구성 요소처럼 들리 겠지만 그것은 당신이 모든 페이지에 표시된 동일한 구성 요소를 원하거나 다른 페이지에 (모든 경우) 표시되는 내용 사이드 바 제어 할 수 있는지 여부 따라 어떻게 구현한다.
모든 페이지에서 동일한 구성 요소를 원할 경우 layout.php 파일 내에 구성 요소 (include_component 포함) 만 포함하면됩니다. 보다 세부적인 제어를 원할 경우 구성 요 소에서 표시해야하는 각 동작의 템플리트를 포함하십시오.
사이드 바에 대한보다 복잡한 해결책은 특정 속성이 설정된 경우 레이아웃에서 포함시키는 것입니다. 그렇게 당신은 actions.class.php :
public function preExecute()
{
$this->getRequest()->setAttribute('show_categories_sidebar', true);
}
을 그럼 당신은 layout.php에서 :
호기심에서<?php if ($sf_request->hasAttribute('show_categories_sidebar')): ?>
<div id="sidebar">
<?php include_component('category', 'sidebar') ?>
</div>
<?php endif; ?>
저는 일반적으로 머리말과 꼬리말 부분 또는 구성 요소를 기본 모듈에 넣습니다. 그런 다음 슬롯을 통해 레이아웃에 포함시켜 다른 작업에 무시하거나 비활성화 할 수 있습니다. 그래서 간단한 레이아웃은 다음과 같습니다
<body>
<?php if (has_slot('header')): ?>
<?php include_slot('header') ?>
<?php else: ?>
<?php include_component('default', 'header') ?>
<?php endif ?>
<?php echo $sf_content ?>
<?php if (has_slot('footer')): ?>
<?php include_slot('footer') ?>
<?php else: ?>
<?php include_partial('default/footer') ?>
<?php endif ?>
</body>
이제 액션/템플릿으로 당에 머리글/바닥 글을 무시할뿐만 아니라, false로 슬롯을 설정하여이를 완전히 비활성화 할 수있는 능력을 가지고있다. 사이드 메뉴에는 비슷한 원리가 사용될 수 있습니다.
, 왜 머리글과 바닥 글에 대한 다른 블록 (구성 요소 VS에 대해 서로 다른 코드가 있습니까 부분)? –
두 가지 다른 방법을 보여 주기만하면됩니다. 컨트롤러 레이어에 속한 작업을 수행해야하는 경우에만 구성 요소를 사용합니다. –
심포니 (symfony) 문서에서 읽은 내용 중 일부를 캐시 할 수없는 이유는 무엇입니까? –