Esse objetivo pode ser alcançado através de diferentes métodos,
1. Usando o BaseController
Do jeito que eu gosto de organizar as coisas, faço uma BaseControlleraula que se estende ao próprio Laravel Controllere montei várias coisas globais por lá. Todos os outros controladores se estendem BaseControllerdo Controlador do 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. Usando filtro
Se você sabe que deseja configurar algo para exibições em todas as solicitações em todo o aplicativo, também pode fazê-lo através de um filtro que é executado antes da solicitação - é assim que trato do objeto Usuário no Laravel.
App::before(function($request)
{
// Set up global user object for views
View::share('user', User::all());
});
OU
Você pode definir seu próprio filtro
Route::filter('user-filter', function() {
View::share('user', User::all());
});
e chame-o através de uma simples chamada de filtro.
Atualização de acordo com a versão 5. *
3. Usando Middleware
Usando o View::sharecommiddleware
Route::group(['middleware' => 'SomeMiddleware'], function(){
// routes
});
class SomeMiddleware {
public function handle($request)
{
\View::share('user', auth()->user());
}
}
4. Usando o View Composer
O View Composer também ajuda a vincular dados específicos para exibição de maneiras diferentes. Você pode vincular diretamente a variável a uma visualização específica ou a todas as visualizações. Por exemplo, você pode criar seu próprio diretório para armazenar seu arquivo do compositor de exibição de acordo com o requisito. e esses arquivos do compositor de visualizações através do Serviço fornecem interação com a visualização.
View compositor método pode usar de maneira diferente, primeiro exemplo pode ser parecido:
Você pode criar um App\Http\ViewComposersdiretório.
Provedor de serviço
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class ViewComposerServiceProvider extends ServiceProvider {
public function boot() {
view()->composer("ViewName","App\Http\ViewComposers\TestViewComposer");
}
}
Depois disso, adicione esse provedor ao config / app.php na seção "fornecedores".
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}}
Este método pode ajudar apenas para a visualização específica. Mas se você deseja acionar o ViewComposer em todos os modos de exibição, precisamos aplicar essa única alteração ao ServiceProvider.
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class ViewComposerServiceProvider extends ServiceProvider {
public function boot() {
view()->composer('*',"App\Http\ViewComposers\TestViewComposer");
}
}
Referência
Documentação do Laravel
Para maiores esclarecimentos, o episódio Laracast
Se ainda houver algo claro do meu lado, me avise.