>백엔드 개발 >PHP 튜토리얼 >Laravel 5의 모든 뷰에서 데이터를 어떻게 공유할 수 있나요?

Laravel 5의 모든 뷰에서 데이터를 어떻게 공유할 수 있나요?

Patricia Arquette
Patricia Arquette원래의
2024-12-01 02:36:08730검색

How Can I Share Data Across All Views in Laravel 5?

Laravel 5의 모든 뷰에 데이터 전달

Laravel 5에서는 다양한 방법을 통해 모든 뷰 간의 데이터 공유가 가능합니다.

방법 1: 사용 BaseController

Laravel의 컨트롤러를 확장하는 BaseController 클래스를 만듭니다.

class BaseController extends Controller
{
    public function __construct()
    {
        $data = [1, 2, 3];
        View::share('data', $data);
    }
}

다른 모든 컨트롤러는 BaseController에서 확장해야 합니다.

class SomeController extends BaseController {
    // ...
}

메서드 2: 필터 사용

app/filters.php 또는 별도의 필터 클래스 파일에서 필터를 사용하세요.

App::before(function($request) {
    View::share('data', [1, 2, 3]);
});

또는 사용자 정의 필터를 정의합니다.

Route::filter('data-filter', function() {
    View::share('data', [1, 2, 3]);
});

Route를 사용하여 특정 경로에 필터를 적용합니다:: filter().

방법 3: 사용 미들웨어

미들웨어를 사용하여 뷰에 데이터 전달:

Route::group(['middleware' => 'SomeMiddleware'], function() {
    // Routes
});

class SomeMiddleware
{
    public function handle($request)
    {
        View::share('data', [1, 2, 3]);
    }
}

방법 4: View Composer 사용

View를 사용하여 뷰에 데이터 바인딩 작곡가. 이를 통해 데이터를 특정 보기 또는 모든 보기에 바인딩할 수 있습니다.

데이터를 특정 보기에 바인딩하려면 ViewComposer 클래스를 생성하고 서비스 공급자에 등록하세요.

// ViewComposer
use Illuminate\Contracts\View\View;

class DataComposer
{
    public function compose(View $view)
    {
        $view->with('data', [1, 2, 3]);
    }
}

// Service Provider
public function boot() {
    view()->composer('view-name', 'DataComposer');
}

바인딩하려면 모든 뷰에 데이터를 추가하려면 서비스에서 다음 코드를 사용하세요. 공급자:

view()->composer('*', 'DataComposer');

참조:

  • [Laravel 문서](https://laravel.com/docs/5.7/views#sharing-data -전체 조회수)
  • [Laracast 에피소드](https://laracasts.com/learn/laravel/eloquent/making-models)

위 내용은 Laravel 5의 모든 뷰에서 데이터를 어떻게 공유할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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