>  기사  >  백엔드 개발  >  Laravel 뷰 간의 공유 데이터 및 뷰 Composer_php 예제에 대한 자세한 설명

Laravel 뷰 간의 공유 데이터 및 뷰 Composer_php 예제에 대한 자세한 설명

WBOY
WBOY원래의
2016-08-17 13:02:371217검색

1. 뷰 간 데이터 공유

단일 보기에서 지정된 데이터를 전달하는 것 외에도 모든 보기에서 동일한 데이터를 전달해야 하는 경우가 있습니다. 즉, 서로 다른 보기에서 데이터를 공유해야 하는 경우가 있습니다. 이를 달성하려면 뷰 팩토리의 share 메서드를 사용해야 합니다.

전역 도우미 함수 viewresponse과 유사합니다. 매개변수가 전달되면 IlluminateViewView 인스턴스가 반환됩니다. 매개변수가 전달되지 않으면 IlluminateViewFactory 인스턴스가 반환됩니다. 따라서 서비스 제공자의 boot 메소드에서 다음 메소드를 사용하여 뷰 간에 데이터를 공유할 수 있습니다.

<&#63;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}}首页

다른 hello.blade.php 보기 파일 만들기:

欢迎来到{{$sitename}}!

브라우저에서 http://laravel.app:8000/testViewHello, http://laravel.app:8000/testViewHome에 각각 접속하면 $sitename의 값을 파싱할 수 있습니다.

2. 뷰 컴포저

뷰가 렌더링될 때마다 로그인된 사용자 정보와 같은 일부 특정 데이터를 뷰에 바인딩하고 싶은 경우가 있습니다. 공장. 이 메서드의 두 번째 콜백 매개변수는 컨트롤러 작업과 클로저 함수를 기반으로 하는 두 가지 메서드를 지원합니다.

단순화를 위해 여전히 AppServiceProvider을 기반으로 하며 별도의 서비스 제공자를 생성하지 않습니다. 여기서는 클로저 매개변수를 전달합니다(컨트롤러 작업은 뷰 문서 참조).

<&#63;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()
  {
    //
  }
}

수정 hello.blade.php 파일 보기:

{{$sitename}}에 오신 것을 환영합니다!

<h3>用户信息</h3>
用户名:{{$user['name']}}<br>
用户头像:{{$user['avatar']}}
브라우저에서

http://laravel.app:8000/testViewHello에 액세스하면 출력 내용은 다음과 같습니다.

欢迎来到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 뷰와 View Composer 간의 데이터 공유에 대한 내용입니다. 이 글이 Laravel을 배우는 모든 분들께 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.