laravel 프레임 워 크 는 Blade 템 플 릿 엔진 에 새 파일 확장자 작업 예제 를 추가 합 니 다.
몇 가지 이유 로 블 레 싱 스킨 의 프레임 워 크 를 Laravel 로 바 꾸 려 고 했 는데 템 플 릿 을 옮 길 때 문제 가 생 겼 어 요.
이전에 저 는 Laravel 에서 추출 한 Blade 템 플 릿 엔진 을 사 용 했 고'tpl 파일 접미사'로 사용자 정의 하 였 습 니 다.기본.blade.php 대신 이 Smarty 템 플 릿 확장 자 를 사용 하 는 이 유 는 무엇 입 니까?뭐 가 있 겠 어,예 쁘 지:-D
하지만 이전에 저 는 FileView Finder 류 의 addExtension 방법 을 직접 호출 하여 확장 자 를 추 가 했 지만 Laravel 에 서 는 이 럴 수 없 었 습 니 다.Illuminate\View 에 몇 마디 덧 붙 일 순 없 잖 아.
구 글 을 찾 아 보 니 편리 하 게 사용 할 수 있 는 방법 이 없 었 다.
먼저 View Facade 에 착안 하여 서비스 용기 에서 view 라 는 바 인 딩 을 분석 한 것 을 볼 수 있 습 니 다.계속 찾 아 보 세 요.Illuminate\View\View Service Provider 를 열 어 View 의 서비스 제공 자가 도대체 무엇 을 view 에 연결 하 는 지 보 세 요.
public function registerFactory()
{
$this->app->singleton('view', function ($app) {
$resolver = $app['view.engine.resolver'];
$finder = $app['view.finder'];
$env = new Factory($resolver, $finder, $app['events']);
$env->setContainer($app);
$env->share('app', $app);
return $env;
});
}
음,우 리 는 이것 이 Illuminate\View\Factory 인 스 턴 스 를 연결 한 것 을 볼 수 있 습 니 다.그래서 우 리 는 계속 아래 를 찾 아 이 공장 류 에 어떤 방법 이 있 는 지 보 겠 습 니 다.
/**
* Register a valid view extension and its engine.
*
* @param string $extension
* @param string $engine
* @param \Closure $resolver
* @return void
*/
public function addExtension($extension, $engine, $resolver = null)
{
$this->finder->addExtension($extension);
if (isset($resolver)) {
$this->engines->register($engine, $resolver);
}
unset($this->extensions[$extension]);
$this->extensions = array_merge([$extension => $engine], $this->extensions);
}
오오~역시 우 리 는 공장 류 에서FileViewFinder::addExtension
의 포장 을 찾 았 다.그러나 내 가 기 쁘 게 호출 을 준비 하고 있 을 때,이 방법 에 신비 한$engine 인자 가 있다 는 것 을 발견 했다.어?WTF?이 니 마 는 무엇 입 니까?・_f・)
문 서 를 보 았 지만 그 이 유 를 알 아 보지 못 해서 방법의 구체 적 인 코드 에서 실 마 리 를 찾 을 수 밖 에 없 었 다.
$this->extensions = array_merge([$extension => $engine], $this->extensions);
어 머?이 줄 은$this->extensions
에[$extension => $engine]
의 배열 을 추가 했다.그러면 우리 가 이 배열 의 원래 정 의 를 보면 이$engine 가 무엇 인지 알 수 있다.
/**
* The extension to engine bindings.
*
* @var array
*/
protected $extensions = ['blade.php' => 'blade', 'php' => 'php'];
아하,원래 이$engine 는$extension 을 해석 하 는 데 사용 되 는 엔진 을 말 합 니 다!이 모든 것 이 밝 혀 졌 습 니 다.만약 당신 이.tpl 에 들 어 오 는 동시에 Blade 엔진 에 들 어 오 면 Blade 에 게.tpl 을 확장자 로 하 는 파일 을 Blade 템 플 릿 엔진 으로 해석 하 라 고 알려 주 는 것 입 니 다.이제 모든 것 이 간단 해 졌 습 니 다.저 희 는 AppServiceProvider(또는 다른 적당 한 서비스 제공 자)에서 View Facade 를 호출 하면 확장 자 를 쉽게 추가 할 수 있 습 니 다.
View::addExtension('tpl', 'blade');
더 많은 Laravel 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있다.,,,,,XiaoLer/blade본 고 는 Laravel 프레임 워 크 를 바탕 으로 하 는 PHP 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Laravel - 변환된 유효성 검사 규칙으로 API 요청 제공동적 콘텐츠를 위해 API를 통해 Laravel CMS에 연결하는 모바일 앱(또는 웹사이트) 구축을 고려하십시오. 이제 앱은 CMS에서 번역된 콘텐츠를 받을 것으로 예상되는 다국어 앱이 될 수 있습니다. 일반적으로 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.