Target ini dapat dicapai melalui metode yang berbeda,
1. Menggunakan BaseController
Cara saya suka mengatur sesuatu, saya membuat BaseController
kelas yang memperluas milik Laravel Controller
, dan mengatur berbagai hal global di sana. Semua pengontrol lain kemudian diperluas dari BaseController
alih-alih Pengontrol Laravel.
class BaseController extends Controller
{
public function __construct()
{
//its just a dummy data object.
$user = User::all();
// Sharing is caring
View::share('user', $user);
}
}
2. Menggunakan Filter
Jika Anda mengetahui fakta bahwa Anda menginginkan sesuatu yang diatur untuk tampilan pada setiap permintaan di seluruh aplikasi, Anda juga dapat melakukannya melalui filter yang berjalan sebelum permintaan - inilah cara saya menangani objek Pengguna di Laravel.
App::before(function($request)
{
// Set up global user object for views
View::share('user', User::all());
});
ATAU
Anda dapat menentukan filter Anda sendiri
Route::filter('user-filter', function() {
View::share('user', User::all());
});
dan menyebutnya melalui panggilan filter sederhana.
Perbarui Menurut Versi 5. *
3. Menggunakan Middleware
Menggunakan View::share
denganmiddleware
Route::group(['middleware' => 'SomeMiddleware'], function(){
// routes
});
class SomeMiddleware {
public function handle($request)
{
\View::share('user', auth()->user());
}
}
4. Menggunakan View Composer
View Composer juga membantu mengikat data tertentu untuk dilihat dengan cara yang berbeda. Anda dapat langsung mengikat variabel ke tampilan tertentu atau ke semua tampilan. Sebagai Contoh, Anda dapat membuat direktori Anda sendiri untuk menyimpan file penulis tampilan Anda sesuai dengan kebutuhan. dan file penulis tampilan ini melalui Layanan menyediakan interaksi dengan tampilan.
Metode tampilan komposer dapat menggunakan cara yang berbeda, Contoh pertama dapat terlihat sama:
Anda bisa membuat App\Http\ViewComposers
direktori.
Penyedia layanan
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class ViewComposerServiceProvider extends ServiceProvider {
public function boot() {
view()->composer("ViewName","App\Http\ViewComposers\TestViewComposer");
}
}
Setelah itu, tambahkan provider ini ke config / app.php di bawah bagian "provider".
TestViewComposer
namespace App\Http\ViewComposers;
use Illuminate\Contracts\View\View;
class TestViewComposer {
public function compose(View $view) {
$view->with('ViewComposerTestVariable', "Calling with View Composer Provider");
}
}
ViewName.blade.php
Here you are... {{$ViewComposerTestVariable}}
Metode ini dapat membantu hanya untuk Tampilan tertentu. Tetapi jika Anda ingin memicu ViewComposer ke semua tampilan, kita harus menerapkan perubahan tunggal ini ke ServiceProvider.
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class ViewComposerServiceProvider extends ServiceProvider {
public function boot() {
view()->composer('*',"App\Http\ViewComposers\TestViewComposer");
}
}
Referensi
Dokumentasi Laravel
Untuk Klarifikasi Lebih Lanjut Episode Laracast
Jika masih ada sesuatu yang tidak jelas dari sisi saya, beri tahu saya.