Mục tiêu này có thể đạt được thông qua các phương pháp khác nhau,
1. Sử dụng BaseControll
Cách tôi muốn thiết lập mọi thứ, tôi tạo một BaseController
lớp mở rộng riêng của Laravel Controller
và thiết lập nhiều thứ toàn cầu khác nhau ở đó. Tất cả các bộ điều khiển khác sau đó mở rộng từ BaseController
chứ không phải Bộ điều khiển của 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. Sử dụng Bộ lọc
Nếu bạn biết rằng bạn muốn một cái gì đó được thiết lập để xem cho mọi yêu cầu trong toàn bộ ứng dụng, bạn cũng có thể thực hiện thông qua bộ lọc chạy trước yêu cầu - đây là cách tôi xử lý đối tượng Người dùng trong Laravel.
App::before(function($request)
{
// Set up global user object for views
View::share('user', User::all());
});
HOẶC LÀ
Bạn có thể xác định bộ lọc của riêng bạn
Route::filter('user-filter', function() {
View::share('user', User::all());
});
và gọi nó thông qua gọi bộ lọc đơn giản.
Cập nhật theo phiên bản 5. *
3. Sử dụng Middleware
Sử dụng View::share
vớimiddleware
Route::group(['middleware' => 'SomeMiddleware'], function(){
// routes
});
class SomeMiddleware {
public function handle($request)
{
\View::share('user', auth()->user());
}
}
4. Sử dụng Trình soạn nhạc Xem
Xem Trình soạn thảo cũng giúp liên kết dữ liệu cụ thể để xem theo nhiều cách khác nhau. Bạn có thể liên kết trực tiếp biến với chế độ xem cụ thể hoặc với tất cả các chế độ xem. Ví dụ, bạn có thể tạo thư mục của riêng mình để lưu trữ tệp soạn thảo chế độ xem theo yêu cầu. và các tệp soạn thảo chế độ xem này thông qua Dịch vụ cung cấp tương tác với chế độ xem.
Xem phương pháp soạn nhạc có thể sử dụng cách khác nhau, ví dụ đầu tiên có thể trông giống nhau:
Bạn có thể tạo một App\Http\ViewComposers
thư mục.
Nhà cung cấp dịch vụ
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class ViewComposerServiceProvider extends ServiceProvider {
public function boot() {
view()->composer("ViewName","App\Http\ViewComposers\TestViewComposer");
}
}
Sau đó, thêm nhà cung cấp này vào config / app.php trong phần "nhà cung cấp".
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}}
Phương pháp này có thể giúp chỉ cho Chế độ xem cụ thể. Nhưng nếu bạn muốn kích hoạt ViewComposer cho tất cả các chế độ xem, chúng tôi phải áp dụng thay đổi duy nhất này cho ServiceProvider.
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class ViewComposerServiceProvider extends ServiceProvider {
public function boot() {
view()->composer('*',"App\Http\ViewComposers\TestViewComposer");
}
}
Tài liệu tham khảo
Tài liệu của Laravel
Để làm rõ hơn Tập phim Laracast
Nếu vẫn còn một cái gì đó không rõ ràng từ phía tôi, cho tôi biết.