laravel 프레임 워 크 는 Blade 템 플 릿 엔진 에 새 파일 확장자 작업 예제 를 추가 합 니 다.

이 사례 는 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 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기