0

젠드 프레임 워크를 사용하여 방금 시작한 클래스 클래스와 관련하여 궁금한 점이 있습니다. 나는 거의 모든 설정을 얻기위한 모범 사례에 대해 궁금해합니다.젠드 프레임 워크 1.11 레이아웃 클래스 등

난 그냥 레이아웃을 사용하도록 설정하고이 특히 CSS 파일과 JS 스크립트의 목록을 통과 어디 내가 들러 스크립트를 만들어 내 이전 응용 프로그램에서 포장 HTML의 머리, 몸, 바닥 글 등

이 주문. 이 개발 모드에 있다면 그것은 파일 이름을 통해 단지 루프를 거와 같이 그들을 인쇄 : 그 다음이 10 개인 CSS와 JS 파일을 인쇄 할 수 있습니다 개발 모드의 경우

foreach ($CSS_Scripts as $file) { 
    echo '<link src="' . $file . '" ref="stylesheet" />'; 
} 

foreach ($JS_Scripts as $file) { 
    echo '<script type="text/javascript" src="' . $file . '"></script>'; 
} 

. 제작 중이라면 번들로 묶어서 CSS 1 개와 JS 파일 1 개를 묶을 것입니다.

이 템플릿을 사용하면 ... 논리가 어디로 향해야하는지 잘 모르겠습니다. 그것은 모든 페이지에 존재해야하는 논리이므로 layout.phtml 안에 있습니다.하지만 수업을 올리려는 의도는 어디에 있습니까? 어떻게 실행해야합니까? 나는 그들을 projectname/library에 넣고 Bootstrap.php 안에 bundler 로직을 실행 한 다음 뷰에 할당하고 layout.phtml 안에 뷰를 호출합니까?

또한 ... 로그 아웃 할 때 모든 페이지의 상단에서 로그인 양식을 사용하고 싶습니다. layout.phtml 나는 추측하고 있습니다. 양식 Application_Form_Login을 만들었지 만 로그인을 허용하려면 Controller 안에 조치가 필요합니까? Bootstrap 내의 로그인 작업을 수행해야하므로 모든 페이지에서 로그인 할 수 있고 모든 페이지에 loginAction이 중복되지는 않습니까?

하지만 유연성이 더 좋아 지겠지 만 Zend_Auth도 그렇습니까? 어쩌면 이것은 Bootstrap 내부에서 시작한 다음 layout.phtml 전체를 통해 시작되었으며 로그인 한 경우 어떤보기로도 할 수 있습니까?

URL에 SEO 태그가있는 방문 페이지의 경우 ... 예를 들어 키워드별로 별도의 컨트롤러 /보기를 만드는 경우를 생각해 봅니다. stack-overflow/computer-questions/digital-clocks/그리고 그 안에 들어있는 내용 Views

감사합니다 ... 나는 모든 것이 분리되어있을 때 그 생각이 다른 방식으로 혼란 스럽습니다. 내가 원하고 원하는 곳에서 스파게티 코드가 나옵니다 .-

+0

처음에는 혼란스럽고 어디서부터 시작해야할지 모르겠습니다. 아마도 퀵 스타트/튜토리얼을보고 zf를 탐색해야 할 것입니다. 기존 응용 프로그램을 zf 용으로 쉽게 다시 작성할 것을 기대하지 마십시오. 일부 키워드는 경로 ('Controller'의 일부)와 View_Helpers입니다. 그 두 사람은 귀하의 문제 중 약 4/5를 해결합니다 :) – Fge

답변

2

다음은 몇 가지 질문에 대한 답변입니다.

부트 스트랩은 응용 프로그램과 리소스를 설정하기위한 것입니다. 정말로 부트 스트랩에 응용 프로그램 특정 코드가 필요하지 않습니다. 부트 스트랩을 사용하여보기를 설정하고, 플러그인을 등록하고, 데이터베이스 및 리소스가 설정되었는지 확인하고, 필요하다면 부트 스트랩에서 세션을 초기화 할 수 있습니다.

묶음 처리는 layout.phtml 파일에서 수행해야합니다. placeholder helpers Zend Framework 오퍼링 중 일부를 제대로 활용하면 원하는 것을 쉽게 성취 할 수 있습니다. 여기

는 예입니다,이 코드가 layout.phtml 파일에있을 것입니다 :

<?php 
$this->headScript() 
    ->prependFile($this->baseUrl('js/importantCode.js'), 'text/javascript'); 

echo $this->headScript(); 

가 headScript 도우미를 사용하여, 우리는 할 스크립트의 목록에 파일 'JS/importantCode.js을'추가 레이아웃에 포함되어 있습니다. 이 작업을 레이아웃에서 수행하면 importantCode.js 파일이 항상 페이지에 포함됩니다.

<?php 
$this->headScript()->appendFile($this->baseUrl('js/calendar.js')) 
        ->appendFile($this->baseUrl('js/tooltips.js')); 
?> 

이 태그에 두 개 더 자바 스크립트 파일을 추가 할 것입니다,하지만 : 지금 당신은 당신이 당신의보기 스크립트에서, 모든 곳에서 사용하지 않는 몇 가지 추가 자바 스크립트를 사용하는 특별 페이지가 있다고 가정 해, 당신은 단순히이 작업을 수행 할 수 있습니다 이 특정보기. 이 논리를 많은 페이지에서 반복하는 경우 플러그인 또는보기 도우미를 사용하여보기에 이러한 파일을 간단하게 추가 할 수 있지만 핵심은 부트 스트랩이 필요하지 않다는 것입니다. 비슷한 헬퍼는 CSS 또는 인라인 스타일을 포함하기 위해 존재합니다.

사용자 지정 클래스 중 일부를 배치하는 일반적인 위치는 library/My 폴더입니다. 그런 다음 Zend 구조를 따라 클래스와 디렉토리를 찾을 수 있으며 클래스 이름을 My_Custom_Class (library/My/Custom/Class.php)으로 지정하면 필요에 따라 자동로드 할 수 있습니다.

젠드 애플리케이션 코드 중 어느 것이 든 간단하게 $obj = new My_Custom_Class()이라고 말하면 Zend가 라이브러리/My/Custom/Class.php에서 해당 클래스를 자동으로로드하므로 사방에 포함하거나 필요하지 않습니다. 필요할 때만 인스턴스화하여 필요할 때마다 포함하지 않아도됩니다.

로그인 과정에서 로그인을 처리하기 위해 하나의 작업을 만듭니다. 전용 컨트롤러에있을 수도 있고, 로그인 프로세스를 포함시킬 적절한 컨트롤러 (예 : IndexController)를 찾을 수도 있습니다. View Partial을 사용하여 로그인 양식을 표시하기 위해 레이아웃에 포함 시키면 로그인을 처리하기위한 로그인 작업을 항상 가리키고 숨겨진 값을 사용하여 사용자를 컨트롤러로 리디렉션하고 로그인 한 작업을 if 네가 원한다.

귀하의 SEO URL에 관해서는 맞춤 경로가 귀하의 상황에 유용 할 수도 있고, URL의 구조만으로 대부분의 SEO가 URL 매개 변수 일 수 있습니다. http://yoursite.com/product/view/category/Digital-Clocks/cid/1234을 가져 가십시오. 제품은 컨트롤러이고,보기는 동작이며, 매개 변수 카테고리는 디지털 시계이며 cid (카테고리 ID)는 1234입니다. 맞춤 경로를 사용하여 더 짧고 친숙한 URL을 얻을 수 있습니다.

일부 도움이 되길 바랍니다.

+0

그 모두를 주셔서 감사합니다, 그들의 정확한 위치에 물건을 넣어 시작할 수 있습니다. headScript()와 관련하여 프론트 엔드 성능에 지극히 나쁜 Head에 태그의 목록을 추가하는 것과 비슷하게 보입니다. 백엔더가 개발 한 PHP 프레임 워크이므로 간과 한 것 같습니다. head.js()를 통해 그들을 밀고 싶었습니다. 그리고 생산시에는 번들/축소하십시오. 먼저 머리말 스크립트에 번들을 추가하는 메소드를 추가 할 수 있습니다. –

+0

Minify의 ZF 구현을 ZF 뷰 헬퍼로 생각한 것 같습니다. http://stackoverflow.com/questions/4618790/any-good-zend-framework-minify-implementations를 참조하십시오. –

+0

headScript 옵션이 제공 한 코드를 대체하는 좋은 방법 인 것 같습니다 :'foreach ($ JS_Scripts as $ file) { echo ' '; }'그 대안이 될 것입니다. 프로덕션을 위해 스크립트를 축소하는 것이 좋습니다. 서버가 ETag를 지원하면 클라이언트는 수정되지 않은 경우 스크립트를 두 번 이상 다시 다운로드하면 안됩니다. – drew010