Laravel 8控制器传递pageTitle变量报Undefined variable错误问题
问题原因
你传递的pageTitle变量作用域仅限于你返回的livewire.show-users视图本身,没有传递到嵌套的page-header.blade.php或者全局布局中,因此子视图/布局读取不到该变量。
对应解决方案
方案1:引用子视图时手动传递参数
如果你是在livewire.show-users视图中引入的page-header,将引入代码修改为如下形式,手动传递pageTitle变量:@include('page-header', ['pageTitle' => $pageTitle])方案2:使用视图合成器全局共享变量给指定视图
若多个页面都需要用到page-header,可以在服务提供者中配置视图合成器,统一给page-header传递变量,无需每个控制器重复赋值。
打开app/Providers/AppServiceProvider.php,在boot方法中添加以下代码:use Illuminate\Support\Facades\View; public function boot() { View::composer('page-header', function ($view) { // 优先读取当前视图已传递的pageTitle,没有就用默认值 $pageTitle = View::getShared()['pageTitle'] ?? '默认标题'; $view->with('pageTitle', $pageTitle); }); }方案3:全局布局引用时直接共享变量
如果page-header是写在全局布局文件中,可将变量直接共享给全局布局,修改控制器中的返回代码:public function render() { ... return view('livewire.show-users', [ 'users' => $query->with('documents')->paginate($this->perPage), 'currentUser' => auth()->user(), ])->with('pageTitle', 'Users'); }方案4:清除视图缓存
如果修改后仍然报错,可能是Laravel视图缓存未更新,运行以下命令清除缓存即可:php artisan view:clear
内容的提问来源于stack exchange,提问作者Charles Smith
相关产品推荐
相关产品推荐

