服务器

时间:2016-06-18 01:23:22

标签: php laravel deployment

我的Laravel网页在本地工作得非常好,但是当我将其上传到我的服务器时它会中断。它工作正常,直到我做的最后一次更新,我添加或多或少的整个网页。

两个安装之间存在一些版本不匹配:

Local:Arch Linux
服务器:Ubuntu 14.04
本地:php 5.6.16
服务器:php 5.5.9

以下是我目前面临的错误的屏幕截图,但还有更多。如果我评论此行另一个错误显示: Error 失败的视图是一个栏,显示在除登录页面之外的所有页面上。 "布局/ 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;
&#13;
&#13;

视图包含在&#34; layouts / master.blade.php&#34;文件:

&#13;
&#13;
@if(!Request::is('auth/login'))
    <!! sidebar not included on login page. >
    @include('layouts.topbar')
@endif
&#13;
&#13;
&#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);
    }
}

我很乐意在必要时提供更多信息,但我不知道什么是诚实的。

2 个答案:

答案 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