Цю ціль можна досягти різним методом,
1. Використання BaseController
Як я люблю налаштовувати речі, я BaseController
складаю клас, який розширює власний Laravel Controller
, і встановлюю там різні глобальні речі. Всі інші контролери потім BaseController
походять від контролера Laravel, а не від контролера 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. Використання фільтра
Якщо вам відомо, що ви хочете щось налаштувати для перегляду кожного запиту у всій програмі, ви також можете це зробити через фільтр, який працює до запиту - ось як я маю справу з об'єктом користувача в Laravel.
App::before(function($request)
{
// Set up global user object for views
View::share('user', User::all());
});
АБО
Ви можете визначити власний фільтр
Route::filter('user-filter', function() {
View::share('user', User::all());
});
і викликати його за допомогою простого виклику фільтра.
Оновлення відповідно до версії 5. *
3. Використання середнього програмного забезпечення
Використання View::share
сmiddleware
Route::group(['middleware' => 'SomeMiddleware'], function(){
// routes
});
class SomeMiddleware {
public function handle($request)
{
\View::share('user', auth()->user());
}
}
4. Використання View Composer
Перегляд композитора також допомагає пов'язувати конкретні дані для перегляду різними способами. Ви можете безпосередньо прив’язувати змінну до певного перегляду або до всіх представлень даних. Наприклад, ви можете створити власний каталог, щоб зберігати файл композитора перегляду відповідно до вимог. і ці файли композитора перегляду через Сервіс забезпечують взаємодію з представленням.
Переглянути композиторський метод можна по-різному. Перший приклад може виглядати однаково:
Ви можете створити App\Http\ViewComposers
каталог.
Постачальник послуг
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class ViewComposerServiceProvider extends ServiceProvider {
public function boot() {
view()->composer("ViewName","App\Http\ViewComposers\TestViewComposer");
}
}
Після цього додайте цього постачальника до config / app.php у розділі "провайдери".
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}}
Цей метод може допомогти лише для певного перегляду. Але якщо ви хочете запустити ViewComposer для всіх переглядів, ми повинні застосувати цю єдину зміну до ServiceProvider.
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class ViewComposerServiceProvider extends ServiceProvider {
public function boot() {
view()->composer('*',"App\Http\ViewComposers\TestViewComposer");
}
}
Довідково
Документація Laravel
Для подальшого уточнення епізоду Laracast
Якщо з моєї сторони все-таки щось незрозуміле, дайте мені знати.