Php Laravel 5.2,基于用户信息加载视图

Php Laravel 5.2,基于用户信息加载视图,php,laravel-5.2,Php,Laravel 5.2,这是Laravel 5.2的新安装,我做的唯一一件事就是向表用户添加一个新列。这个新列是call roles,它只是整数… 我想做的是根据本专栏的信息加载一个控制器/视图… 假设列角色的值为1,则加载视图X 在我的路由文件中,我有这个 Route::group(['middleware' => ['web']], function () { Route::auth(); if(Auth::user()->roles == '1') { Route::get('/adm

这是Laravel 5.2的新安装,我做的唯一一件事就是向表用户添加一个新列。这个新列是call roles,它只是整数…
我想做的是根据本专栏的信息加载一个控制器/视图…
假设列角色的值为1,则加载视图X
在我的路由文件中,我有这个

Route::group(['middleware' => ['web']], function () {
    Route::auth();
if(Auth::user()->roles == '1') {
    Route::get('/admin', 'AdminController@index');
    Route::post('/admin', 'AdminController@save');
    Route::get('/admin/{datas}', 'AdminController@datas');
    Route::get('/admin/list', 'AdminController@list');
    Route::get('/admin/list/{details}', 'AdminController@details');
} else {
    Route::get('/login', 'UsersController@login');
}
namespace App\Http\Controllers;

use App\Http\Requests;
use Auth;
use Illuminate\Http\Request;


// use App\Http\Controllers\Controller;

class AdminController extends Controller
{
    public function __construct()
    {
        $this->middleware('auth');
    }
    //
    public function index() {
        // TODO Gets Data...
        $datos = ['Nombre', 'Otro Nombre', 'Otro mas'];

        // Return Data to tyhe view...
        if(Auth::user()->roles == '11') {
            return View('admin.home', compact('datos'));
        } else {
            return View('/welcome');
        }
    }
}
如果我在一个视图中使用这个
Auth::user()->roles==“1”
,它“起作用”,但不是我想要的,我真的不想安装第三个软件包来进行用户控制,我只想要一些非常简单的东西。。。那么我如何才能做到这一点呢?…

根据马特所说的(我一开始没听懂,我对拉雷维尔很陌生,所以请容忍我),这就是我所做的。。。
安装新的laravel…
然后运行这个
php artisan make:auth
,它将安装用户注册/登录/重置所需的一切…
然后打开AuthController.php将此
protected$redirectTo='/home'
更改为您想要的任何内容,在我的例子中,我调用了delegate
$redirectTo='/delegate'

然后在您的routers.php文件中放入如下内容

Route::group(['middleware' => ['web']], function () {
    Route::auth();
    Route::get('/delegate', 'DelegateController@index');
});
您实际上不需要此路线的视图,您需要的是控制器
在这个控制器上,DelegateController.php将放置如下内容

Route::group(['middleware' => ['web']], function () {
    Route::auth();
if(Auth::user()->roles == '1') {
    Route::get('/admin', 'AdminController@index');
    Route::post('/admin', 'AdminController@save');
    Route::get('/admin/{datas}', 'AdminController@datas');
    Route::get('/admin/list', 'AdminController@list');
    Route::get('/admin/list/{details}', 'AdminController@details');
} else {
    Route::get('/login', 'UsersController@login');
}
namespace App\Http\Controllers;

use App\Http\Requests;
use Auth;
use Illuminate\Http\Request;


// use App\Http\Controllers\Controller;

class AdminController extends Controller
{
    public function __construct()
    {
        $this->middleware('auth');
    }
    //
    public function index() {
        // TODO Gets Data...
        $datos = ['Nombre', 'Otro Nombre', 'Otro mas'];

        // Return Data to tyhe view...
        if(Auth::user()->roles == '11') {
            return View('admin.home', compact('datos'));
        } else {
            return View('/welcome');
        }
    }
}
这就是如何根据用户信息获得不同的视图。。。至少他在为我工作

------更新

在我玩了一会儿之后,我发现即使您为管理员/用户/客户/提供者加载了正确的视图…等等,url/路径也不正确,原因如下:
使用上面的代码,当用户加载提供正确视图的委派控制器时,您将获得
foo.com/login,但url保持为foo.com/delegate如果用户是管理员,我们希望类似foo.com/admin not/delegate的内容,即使您手动将其从/delegate更改为/admin,它仍然可以工作,但问题是,如果用户不是管理员,它仍然会显示管理员面板,我们不希望这样。。。为了解决这个问题,我必须更改我的委派控制器。。。我必须将用户重定向到正确的路径,而不是加载视图。。。

这是与之前相同的代码,但我没有加载视图,而是重定向用户,为了在路由文件中正常工作,您必须声明每个路径的名称,如下所示

Route::group(['middleware' => ['web']], function () {
    Route::auth();
    Route::get('delegate', 'DelegateController@index');
    // Add your route
    // Route::get('admin', 'AdminController@home');
    Route::get('admin', ['as'=>'admin', 'uses'=>'AdminController@home']);
});
这样,通过调用名称route
return redirect()->route('/myprofile')
…etc
现在这项工作已经开始,我们需要最后检查一下用户正在加载什么,要在每个视图控制器上完成这项工作非常简单,您应该有这样的东西…

class AdminController extends Controller
{
    public function __construct()
    {
        $this->middleware('auth');
        // gets the disco bouncer working...
        if(Auth::user()->roles != '10') {
            Auth::logout();
        }

    }
    //
    public function home() {
        // TODO Gets Data...
        $datos = ['Nombre', 'Otro Nombre', 'Otro mas'];
        // TODO build a model for the actual data...
        // Return Data to the view...
        return View('admin.home', compact('datos'));

    }
}
如您所见,我们可以在所有控制器上使用此选项,并跳过DelegationController,但随后您必须在单个app.blade主视图上为每个用户角色创建一个菜单,这将看起来更脏……

如果你问我的话,是的,我学习拉威尔很开心

只需抓取控制器函数中的列数据(将该页的所有已发布数据发送到该控制器函数),根据所选选项在控制器中进行处理,然后根据所选选项返回视图。