运行 Laravel 5.2 整个应用程序中的函数或路由
Run a function or route in whole application in Laravel 5.2
我正在尝试创建一个我有用户 activity 日志的应用程序。我不想在所有页面中都写一个特殊的功能。我只想在所有页面或控制器上访问它一次并 运行 无论我走到哪里。一直显示在 header.blade.php 上。我想一直使用那个日志。
我有这样的功能。
public function headerLogs()
{
$latestActivities = Activity::with('user')->latest()->limit(10)->get();
return view('layouts.header')->with('logs', $latestActivities);
}
我该怎么做?
在你的基础控制器中:
view()->composer('layouts.header', function($view){
//your code for header logs which gives $logActivites.
$view->with('logs', $logActivites);
}
因此,无论何时创建视图 layouts.header,此 $logActivites
都将可用。
Laravel 具有内置功能:View Composers。如果您希望在每个加载的视图中都包含一些数据(当然您可以准确指定哪些视图),它们就是您所使用的
因此,根据文档,我们将为我们的视图编辑器创建一个服务提供者:
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class ActivitiesComposerServiceProvider extends ServiceProvider
{
/**
* Register bindings in the container.
*
* @return void
*/
public function boot()
{
// Using Closure based composers...
view()->composer('layout.header.activity', function ($view) {
$latestActivities = Activity::with('user')->latest()->limit(10)->get();
$view->with('logs', $latestActivities);
});
}
/**
* Register the service provider.
*
* @return void
*/
public function register()
{
//
}
}
然后您只需将 ActivitiesComposerServiceProvider
服务提供商添加到 config/app.php
中的 providers
数组即可注册您的服务提供商。
所以现在您可以简单地 @include('layout.header.activity')
并且日志将在您的控制器或视图中显示而没有额外的代码行
每个人都遇到过这样一种情况,即必须在每个视图 (blade) 文件中访问一个变量。一种可能的解决方案——让服务提供商加载我们的全局视图信息。例如,在您的服务提供商中键入此内容。
class AppServiceProvider extends ServiceProvider
{
public function boot()
{
// Using view composer for specific view
view()->composer('welcome',function($view) {
$view->with('latestActivities', Activity::with('user')->latest()->limit(10)->get());
});
}
}
然后您可以从所有查看文件中访问 latestActivities 变量
我正在尝试创建一个我有用户 activity 日志的应用程序。我不想在所有页面中都写一个特殊的功能。我只想在所有页面或控制器上访问它一次并 运行 无论我走到哪里。一直显示在 header.blade.php 上。我想一直使用那个日志。
我有这样的功能。
public function headerLogs()
{
$latestActivities = Activity::with('user')->latest()->limit(10)->get();
return view('layouts.header')->with('logs', $latestActivities);
}
我该怎么做?
在你的基础控制器中:
view()->composer('layouts.header', function($view){
//your code for header logs which gives $logActivites.
$view->with('logs', $logActivites);
}
因此,无论何时创建视图 layouts.header,此 $logActivites
都将可用。
Laravel 具有内置功能:View Composers。如果您希望在每个加载的视图中都包含一些数据(当然您可以准确指定哪些视图),它们就是您所使用的
因此,根据文档,我们将为我们的视图编辑器创建一个服务提供者:
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class ActivitiesComposerServiceProvider extends ServiceProvider
{
/**
* Register bindings in the container.
*
* @return void
*/
public function boot()
{
// Using Closure based composers...
view()->composer('layout.header.activity', function ($view) {
$latestActivities = Activity::with('user')->latest()->limit(10)->get();
$view->with('logs', $latestActivities);
});
}
/**
* Register the service provider.
*
* @return void
*/
public function register()
{
//
}
}
然后您只需将 ActivitiesComposerServiceProvider
服务提供商添加到 config/app.php
中的 providers
数组即可注册您的服务提供商。
所以现在您可以简单地 @include('layout.header.activity')
并且日志将在您的控制器或视图中显示而没有额外的代码行
每个人都遇到过这样一种情况,即必须在每个视图 (blade) 文件中访问一个变量。一种可能的解决方案——让服务提供商加载我们的全局视图信息。例如,在您的服务提供商中键入此内容。
class AppServiceProvider extends ServiceProvider
{
public function boot()
{
// Using view composer for specific view
view()->composer('welcome',function($view) {
$view->with('latestActivities', Activity::with('user')->latest()->limit(10)->get());
});
}
}
然后您可以从所有查看文件中访问 latestActivities 变量