Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah Saya Boleh Berkongsi Data Merentas Semua Pandangan dalam Laravel 5?

Bagaimanakah Saya Boleh Berkongsi Data Merentas Semua Pandangan dalam Laravel 5?

Patricia Arquette
Patricia Arquetteasal
2024-12-01 02:36:08730semak imbas

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

Mengirim Data ke Semua Paparan dalam Laravel 5

Dalam Laravel 5, perkongsian data antara semua paparan boleh dicapai melalui pelbagai kaedah.

Kaedah 1: Menggunakan BaseController

Buat kelas BaseController yang memanjangkan Pengawal Laravel.

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

Semua pengawal lain kemudiannya hendaklah melanjutkan dari BaseController:

class SomeController extends BaseController {
    // ...
}

Kaedah 2: Menggunakan Penapis

Buat a penapis dalam app/filters.php atau dalam fail kelas penapis yang berasingan:

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

Sebagai alternatif, tentukan penapis tersuai:

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

Gunakan penapis ke laluan tertentu menggunakan Laluan:: penapis().

Kaedah 3: Menggunakan Middleware

Haluskan data menggunakan middleware ke paparan:

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

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

Kaedah 4: Menggunakan View Composer

Ikat data kepada paparan menggunakan View Komposer. Ini membolehkan anda mengikat data pada paparan tertentu atau semua paparan.

Untuk mengikat data pada paparan tertentu, buat kelas ViewComposer dan daftarkannya dalam pembekal perkhidmatan:

// 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');
}

Untuk mengikat data kepada semua paparan, gunakan kod berikut dalam perkhidmatan pembekal:

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

Rujukan:

  • [Laravel Documentation](https://laravel.com/docs/5.7/views#sharing-data -dengan-semua-pandangan)
  • [Laracast Episod](https://laracasts.com/learn/laravel/eloquent/making-models)

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Berkongsi Data Merentas Semua Pandangan dalam Laravel 5?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn