我的Laravel网页在本地工作得非常好,但是当我将其上传到我的服务器时它会中断。它工作正常,直到我做的最后一次更新,我添加或多或少的整个网页。
两个安装之间存在一些版本不匹配:
Local:Arch Linux
服务器:Ubuntu 14.04
本地:php 5.6.16
服务器:php 5.5.9
以下是我目前面临的错误的屏幕截图,但还有更多。如果我评论此行另一个错误显示: 失败的视图是一个栏,显示在除登录页面之外的所有页面上。 "布局/ topbar.blade.php":
<div class="container topbar-container" style="text-align:right;">
<a class="btn btn-primary active" role="button" href= {{URL::to('/dashboard')}}>Dashboard</a>
@if ($role == "admin")
<a class="btn btn-primary active" role="button" href= {{URL::to('/dashboard/admin_settings')}}>Admin Settings</a>
@endif
<a class="btn btn-primary active" role="button" href= {{URL::to('/dashboard/settings')}}>Settings</a>
<a class="btn btn-primary active" role="button" href="{{ URL::to('/auth/logout') }}">Sign Out</a>
</div>
&#13;
视图包含在&#34; layouts / master.blade.php&#34;文件:
@if(!Request::is('auth/login'))
<!! sidebar not included on login page. >
@include('layouts.topbar')
@endif
&#13;
使用此View Composer&#34; ViewComposers / UserComposer.php&#34;:
<?php
namespace App\Http\ViewComposers;
use Illuminate\Contracts\View\View;
use Auth;
class UserComposer
{
/**
* Create a new profile composer.
*
* @param UserRepository $users
* @return void
*/
public function __construct()
{
}
/**
* Bind data to the view.
*
* @param View $view
* @return void
*/
public function compose(View $view)
{
$view->with('role', Auth::user()->role);
}
}
我很乐意在必要时提供更多信息,但我不知道什么是诚实的。
答案 0 :(得分:1)
首先检查角色isset
。
@if(isset($role) && $role == "admin")
答案 1 :(得分:1)
好吧,这样做很简单,让我们从头开始吧
在根目录中打开终端并输入
php artisan make:provider ViewcomposerProvider
然后导航并打开app\providers\ViewcomposerProvider.php
将此代码添加到该文件
namespace App\Providers;
use Auth;
use Illuminate\Support\ServiceProvider;
class Viewcomposer extends ServiceProvider {
/**
* Bootstrap the application services.
*
* @return void
*/
public function boot() {
view()->composer(['layouts.topbar'], function ($view) {
if (Auth::check()) {
$view->with('role', Auth::user()->role);
} else {
abort(403, 'Unauthorized action.');
}
});
}
/**
* Register the application services.
*
* @return void
*/
public function register() {
//
}
}
然后转到config\app.php
并将其添加到providers数组
App\Providers\ViewcomposerProvider::class,
这应该可以正常工作(在Ubuntu环境下测试)
修改强>
更改像这样包含topbar的方式
@if(!Request::is('auth/login') && Auth::check())
@include('layouts.topbar')
@endif
编辑2 在你的topbar中尝试这个(在这种情况下,我认为不需要Viewcomposer,但它应该解决问题)
@if (Auth::user()->role == "admin")
<a class="btn btn-primary active" role="button" href= {{URL::to('/dashboard/admin_settings')}}>Admin Settings</a>
@endif