我想在菜单上进行动态播放,而是展示"本月的电影"它显示" 12月的影片" (见图);是12月是每月更新的当月
我的问题是菜单不属于特定的路由/控制器,因此我无法像其他路由那样传递变量。示例:
$month = Carbon::now()->format('F');
return view('partials._nav')
->withMonth($month);
我可以解决"将月份传递给所有控制器/路由的问题,但我重复了很多次相同的代码。
我的问题是
1-在Laravel中是否有任何方法可以将变量传递给某种根状态(如Angular中),所以,我保持变量在我的应用程序的所有路径中都可用?
2-有没有办法可以将变量返回到多个视图?所以我只是将变量传递给所有可能的视图,如:
return view('films.all', 'films.show', 'films.index', 'actors.show', 'actors.index')
->withMonth($month);
任何想法都将不胜感激
最后我有解决方案:
public function boot()
{
View::composer('*', function ($view) {
$month = Carbon::now()->format('F');
$view->withMonth($month);
});
}
答案 0 :(得分:3)
您可以使用share()
方法将数据共享到多个视图。将以下代码放在boot()
App/Providers/AppServiceProvider
方法中:
public function boot()
{
view()->share('key', 'value');
}
答案 1 :(得分:2)
您可以使用AppServiceProvider
,通过您扩展的布局传递变量。
您的代码将是:
public function boot()
{
View::composer('*', function ($view) {
$var = 'value';
$view->with('var', $var);
});
View::composer('*', function ($view) {
$month = Carbon::now()->format('F');
$view->withMonth($month);
});
}
您需要使用以下课程:use Illuminate\Support\Facades\View;
希望这有效!
答案 2 :(得分:0)
另一种方法是使用Laravel Session。 您可以在会话中保存变量值,然后将其保存到任何地方。
//To Save value in Session
$month = 'January';
Session::put('currentMonth', $month);
//To Get value from Session
if((Session::has('currentMonth'))) {
$month_var = Session::get('currentMonth');
}