Laravel 보기 간 공유 데이터 및 보기 Composer

1.보기 간 데이터 공유
하나의 보기에 서 지정 한 데 이 터 를 전달 하 는 것 을 제외 하고 모든 보기에 서 같은 데 이 터 를 전송 해 야 할 때 가 있 습 니 다.즉,우 리 는 서로 다른 보기에 서 데 이 터 를 공유 해 야 합 니 다.이 를 실현 하려 면 보기 공장share방법 을 사용 해 야 한다.
전역 도움말 함수viewresponse와 유사 하 며,매개 변 수 를 입력 하면Illuminate\View\View인 스 턴 스 를 되 돌려 주 고,매개 변 수 를 입력 하지 않 으 면Illuminate\View\Factory인 스 턴 스 를 되 돌려 줍 니 다.그래서 저 희 는 서비스 제공 자의boot방법 에서 다음 과 같은 방식 으로 보기 간 에 데 이 터 를 공유 할 수 있 습 니 다.

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
  /**
   * Bootstrap any application services.
   *
   * @return void
   */
  public function boot()
  {
    //       
    view()->share('sitename','Laravel  ');
  }

  /**
   * Register any application services.
   *
   * @return void
   */
  public function register()
  {
    //
  }
}
우 리 는routes.php에서 두 개의 경 로 를 정의 한다.

Route::get('testViewHello',function(){
  return view('hello');
});

Route::get('testViewHome',function(){
  return view('home');
});
그리고resources/views디 렉 터 리 아래home.blade.php보기 파일 을 만 듭 니 다.내용 은 다음 과 같 습 니 다.

{{$sitename}}  
보기 파일 을 하나 더 만 듭 니 다:

    {{$sitename}}!
브 라 우 저 에서 각각 방문hello.blade.phphttp://laravel.app:8000/testViewHello하면http://laravel.app:8000/testViewHome의 값 을 분석 할 수 있 습 니 다.
2.보기 Composer
때때로 우 리 는 보기 가 렌 더 링 될 때마다 특정한 데 이 터 를 보기 에 연결 하려 고 합 니 다.예 를 들 어 로그 인 사용자 정 보 를 사용 하려 면 보기 Composer 를 사용 해 야 합 니 다.보기 Composer 는 보기 공장 의 coposer 방법 을 통 해 이 루어 집 니 다.이 방법의 두 번 째 리 셋 매개 변 수 는 컨트롤 러 동작 과 패 킷 함수 두 가지 방식 을 지원 합 니 다.
간단하게 볼 때 저 희 는$sitename을 바탕 으로 서비스 제공 자 를 따로 만 들 지 않 습 니 다.여기 서 저 희 는 패 킷 매개 변수(컨트롤 러 동작 참조 보기 문서)를 전달 합 니 다.

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
  /**
   * Bootstrap any application services.
   *
   * @return void
   */
  public function boot()
  {
    //       
    view()->share('sitename','Laravel  ');

    //  Composer
    view()->composer('hello',function($view){
      $view->with('user',array('name'=>'test','avatar'=>'/path/to/test.jpg'));
    });
  }

  /**
   * Register any application services.
   *
   * @return void
   */
  public function register()
  {
    //
  }
}
보기 파일 수정AppServiceProvider:
{{$sitename}에 오신 것 을 환영 합 니 다!

<h3>    </h3>
   :{{$user['name']}}<br>
    :{{$user['avatar']}}
브 라 우 저 에서 접근hello.blade.php,출력 내용 은 다음 과 같 습 니 다.

    Laravel  !

    

   :test
    :/path/to/test.jpg
여러 보기 로 데 이 터 를 전달 할 수 있 습 니 다:

view()->composer(['hello','home'],function($view){
  $view->with('user',array('name'=>'test','avatar'=>'/path/to/test.jpg'));
});
심지어 모든 보기(어댑터 사용*):

view()->composer('*',function($view){
  $view->with('user',array('name'=>'test','avatar'=>'/path/to/test.jpg'));
});
이상 은 Laravel 보기 간 에 데 이 터 를 공유 하고 보기 Composer 의 상세 한 내용 입 니 다.본 고 는 여러분 이 Laravel 을 배 우 는 데 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기