슬림 프레임 워크 3이 새로 도입되었습니다. 이해해야 할 한 가지는 라우터 "012"를 사용하는 방법입니다. ""은 "글로벌"템플릿입니다.슬림 프레임 워크 3 - 글로벌 템플릿에서 라우터 사용하기
내말은 모든 페이지에 나타나는 탐색 메뉴와 같은 템플릿입니다. 내가 함께 설치된 example tutorial에 따라, "PHP-보기"라이브러리를 사용하고 템플릿에 대한
: 내 템플릿 디렉토리에서
composer require slim/php-view
을 나는 출력하고자 nav.php
라는 파일이 내 링크.
나는 그렇게
<a href="<?=$router->pathFor('sign-up')?>">Sign Up</a>
같은 라우터를 호출하지만 ... 예제 튜토리얼은 당신이 1 개인 곳, 예를 들어,에서 해당 링크를 전달하는 방법을 보여줍니다하는 방법을 이해 $app->get('/sign-up' ... })->setName("sign-up");
모든 개별 URL 경로에 매개 변수로 전달하지 않고도 템플릿을 전역 적으로 사용할 수 있습니까?
저는 CakePHP와 같은 프레임 워크에 익숙합니다. CakePHP에서는 모든 요청에서 전역 적으로 설정할 수있는 "AppController"가 있습니다. 이것이 슬림에서 어떻게 이루어 졌는지는 모르겠지만, 이것이 내가 뒤 따르는 효과입니다.
이것은 아마 그것을 할 수있는 가장 좋은 방법입니다. 컨테이너 팩토리에서 렌더러를 설정하면 컨테이너의 라우터 인스턴스를 가져 와서 렌더러에 템플릿 변수로 전달할 수 있습니다. – geggleto
@geggleto이 문제는 전체 라우터 객체를 모든 템플릿으로 전달한다는 점에서 문제가 있습니다.내 템플릿에서'var_dump ($ router);'를 수행하면 DB 자격 증명을 포함하여 필요없는 것들이 포함 된 거대한 배열이 있습니다. 명명 된 경로에 액세스 할 수있는 곳에서보다 효율적인 방법이 있는지 확실하지 않은 경우? –
개체는 기본적으로 참조로 전달되므로이 솔루션에는 성능상의 불이익이 없습니다. 비 프리미티브 템플릿이 많은 경우 [Slim Twig-view 구성 요소] (https://github.com/slimphp/Twig-View)를 사용하는 것이 좋습니다. 150 줄보다 훨씬 강력한 Twig 라이브러리가 사용됩니다 단일 클래스 PhpRenderer. –