如何将此菜单包含到我所有的视图中?[Laravel 5]
如何将此菜单包含到我所有的视图中?[Laravel 5]
您好,我正在尝试从我的表格中创建一个菜单,然后我想将它分享给我的视图。目前我尝试的是这样的:
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); } } class HomeController extends Maincontroller{} @include('public_template.header')POST 页面以演示多级菜单
@include('public_template.footer') @include('public_template.sidebar')General
但是使用上述脚本时,我遇到了以下错误:
Undefined variable: items (View: D:\xampp\htdocs\sitestarter\resources\views\public_template\sidebar.blade.php) (View: D:\xampp\htdocs\sitestarter\resources\views\public_template\sidebar.blade.php) (View: D:\xampp\htdocs\sitestarter\resources\views\public_template\sidebar.blade.php)
如何解决这个问题?提前感谢您,对于我的糟糕英语表示抱歉。
参考链接:[如何在Laravel 5中将数据传递给所有视图?](https://stackoverflow.com/questions/28608527/how-to-pass-data-to-all-views-in-laravel-5)
我正在遵循Dhaval Chheda的方法,但我仍然无法理解。我创建了`MenuComposer`:
namespace App\Http\ViewComposers; use Illuminate\View\View; class MenuComposer { public $menu = []; 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,
有解决方案吗?我仍然遇到相同的错误。
问题的出现原因是作者想要在所有的视图中包含一个菜单。解决方法是使用视图组合器(View Composer)。
首先,作者创建了一个名为ContactComposer的文件,放在Http/ViewComposers文件夹中。文件内容如下:
namespace App\Http\ViewComposers; use Illuminate\View\View; class ContactComposer { public function compose(View $view) { $view->with('PhoneNumber', '1111111111'); } }
然后,在AppServiceProvider的boot方法中,作者将所有的视图与上述视图组合器绑定起来:
View::composer( '*', 'App\Http\ViewComposers\ContactComposer' );
这样就可以在所有的视图中包含该菜单了。作者解释说,为了更好地组织文件结构,他创建了ViewComposers文件夹,但这并非必需。
希望这对你有所帮助。