美好的一天,我正在尝试从我的桌子创建一个菜单,然后我想将它分享给我的观点。
这是我到目前为止所尝试的内容
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Input;
use App\Menu as menumodel;
class Maincontroller extends Controller
{
//
public function __construct()
{
$items = menumodel::tree();
View::make('items', $items);
}
}
然后在我的控制器(HomeController)中。我这样做
class HomeController extends Maincontroller{}
然后这是我的观点
@include('public_template.header')
<div class="right_col" role="main">
<div class="">
<div class="page-title">
<div class="title_left">
<h3>POST <small> Page to demonstrate multilevel menu</small></h3>
</div>
</div>
</div>
</div>
@include('public_template.footer')
在我的public_template.header
中,我只需添加public_template.sidebar
,这里的内容为public_template.sidebar
<div id="sidebar-menu" class="main_menu_side hidden-print main_menu">
<div class="menu_section">
<h3>General</h3>
<ul class="nav side-menu">
@foreach($items as $item)
<li><a><i class="fa fa-home"></i> Home <span class="fa fa-chevron-down"></span></a>
<ul class="nav child_menu">
<li><a href="index.html">Dashboard</a></li>
<li><a href="index2.html">Dashboard2</a></li>
<li><a href="index3.html">Dashboard3</a></li>
</ul>
</li>
@endforeach
</ul>
</div>
</div>
但是上面的脚本我得到了这个错误
未定义的变量:items(查看: d:\ XAMPP \ htdocs中\ sitestarter \资源\意见\ public_template \ sidebar.blade.php) (视图: d:\ XAMPP \ htdocs中\ sitestarter \资源\意见\ public_template \ sidebar.blade.php) (视图: d:\ XAMPP \ htdocs中\ sitestarter \资源\视图\ public_template \ sidebar.blade.php)
我该如何解决?提前谢谢,抱歉我的英文不好
REF How to pass data to all views in Laravel 5?
我遵循Dhaval Chheda方法。但我仍然无法做到。
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class ComposerMenuProvider extends ServiceProvider
{
public function boot()
{
view()->composer(
'app',
'App\Http\ViewComposers\MenuComposer'
); }
public function register()
{
//
}
}
然后我创建MenuComposer
<?php
namespace App\Http\ViewComposers;
use Illuminate\View\View;
class MenuComposer
{
public $menu = [];
/**
*
*
* @return void
*/
public function __construct()
{
$this->items = menumodel::tree();
}
public function compose(View $view)
{
$view->with('items', end($this->items));
}
}
然后在app \ config.php中添加此行
App\Providers\ComposerMenuProvider::class,
任何解决方案?我仍然得到同样的错误;
答案 0 :(得分:3)
我正在使用View Composer,如下所示
我在Http / ViewComposers文件夹中创建了一个名为ContactComposer的新文件,如下所示
namespace App\Http\ViewComposers;
use Illuminate\View\View;
//use App\Repositories\UserRepository;
class ContactComposer
{
/**
// * The user repository implementation.
// *
// * @var UserRepository
// */
// protected $users;
// *
// * Create a new profile composer.
// *
// * @param UserRepository $users
// * @return void
// public function __construct(UserRepository $users)
// {
// // Dependencies automatically resolved by service container...
// $this->users = $users;
// }
/**
* Bind data to the view.
*
* @param View $view
* @return void
*/
public function compose(View $view)
{
$view->with('PhoneNumber', '1111111111');
}
}
并在AppServiceProviders内部引导方法我将所有视图绑定到上面的View Composer
// Using class based composers...
View::composer(
'*', 'App\Http\ViewComposers\ContactComposer'
);
希望这会有所帮助