我想在布局中使用$unreadMessages
,但是我不知道全局使用哪个控制器进行布局。
它在dashboardController
中,但出现此错误:
未定义变量:unreadMessages(查看: /myhost/resources/views/layouts/app.blade.php)(视图:/ myhost / resources / views / layouts / app.blade.php)
我可以在哪个控制器中定义此变量,以便可以全局使用它?
此代码用于$unreadMessages
中的dashboardController
:
<?php
class DashboardController extends Controller
{
public function index()
{
\Artisan::call('status:check');
$unreadMessages = TicketMessage::where(['is_read' => 0])->whereIn('ticket_id', $ticketIds)->whereNotIn('user_id', [Auth::user()->id])->count();
return view('dashboard', compact(
'unreadMessages'
));
}
}
答案 0 :(得分:1)
您可以通过在Route.php
文件中使用以下代码来解决此问题:
view()->share('unreadMessages', $unreadMessages);
答案 1 :(得分:0)
在您的dashboard.blade.php中,可能引用了@include('layouts/app')
或类似名称。如果不是,请在您的代码中搜索与此相似的参考。
您需要将$unreadMessages
传递到该子视图。您将其传递到主刀片服务器(dashboard.blade.php),而不是仪表板中包含的刀片服务器(app.blade.php)。
因此,您将需要以下内容:
@include('layouts/app', array('unreadMessages' => $unreadMessages))
以下几篇文章可能会对您有进一步的帮助:
答案 2 :(得分:0)
您可以在启动功能中使用ServiceProvider进行此操作,例如:
public function boot() {
...
view()->composer(['layouts.app'],function($view) {
$unreadMessages = TicketMessage::where(['is_read' => 0])->whereIn('ticket_id', $ticketIds)->whereNotIn('user_id', [Auth::user()->id])->count();
$view->with('unreadMessages',$unreadMessages)
});
}