Laravel 8:将刀片加载到另一个刀片时未定义的变量
Posted
技术标签:
【中文标题】Laravel 8:将刀片加载到另一个刀片时未定义的变量【英文标题】:Laravel 8: Undefined variable when loading a Blade into another Blade 【发布时间】:2021-09-07 14:45:54 【问题描述】:情况:
我正在制作一个通过从表(mysql)中获取数据来填充的侧菜单。
每个<li>
代表菜单的一项:
<li>item 1</li>
<li>item 2</li>
<li>item 3</li>
等等……
问题:
当我看到它的刀片时一切正常,但是当我将它包含在主刀片中时,它会抛出包含数据的变量 $all_items
,使 <li>
无法识别 (Error: "variable not found error")
代码:
web.php
Auth::routes();
Route::get('/home', 'HomeController@index')->name('home');
Route::get('items', 'MenuCmpItemsController@show');
MenuCmpItemsController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\MenuCmpItems;
use DB;
class MenuCmpItemsController extends Controller
public function show()
$all_items = DB::table('tbClas-s-rooms')->select("room_number")->get();
return view('items', ['all_items'=>$all_items]);
items.blade.php(访问 URL '/items' 时工作正常)
@foreach ($all_items as $item)
<li> $item->cmp_name </li>
@endforeach
现在我想在 auth.blade.php 中包含 items.blade.php,它包含以下侧边菜单结构:
<div class="collapse show" id="sidemenu">
<ul class="nav">
@include('items')
</ul>
</div>
但它会抛出
$all_items 未定义
我尝试了什么:
我检查了它是否可能是其他东西,例如,我用文本替换了“$all_items”,并将文本加载到 auth.blade.php 中,所以看起来问题出在变量 $all_items
我检查了如果
return view('items')->compact('all_items');
会有所作为,但不会。
非常感谢任何建议或想法。
【问题讨论】:
如何加载auth.blade.php
?
当你调用auth.blade.php
时,你的Controller方法被调用了吗?不要这么想。可能想看看View Composers
您必须将@include('items', ['all_items'=>$all_items])
传递给包含
【参考方案1】:
您的文件夹结构是什么?在资源文件夹中
【讨论】:
【参考方案2】:shaedrich 建议的解决方案应该可以解决您的问题。
@include('items', ['all_items'=>$all_items])
【讨论】:
以上是关于Laravel 8:将刀片加载到另一个刀片时未定义的变量的主要内容,如果未能解决你的问题,请参考以下文章