所以我刚刚开始学习 Laravel,并且我已经实现了 Entrust Role Permission 包,效果非常好。现在我的问题是,我想要一个“仪表板”页面,如下所示:example.com/dashboard。
问题是,我不确定如何设置。由于在我的 App\Http\Controllers 文件夹中,我为 Admin 和 User 创建了子文件夹,因此它们都有一个 Dashboardcontroller,因为我想为任一类型的用户显示不同的数据。
如何声明指向仪表板的路由并检查经过身份验证的用户具有哪个角色,然后加载正确的控制器?它必须与命名空间做一些事情吗?我还没有真正找到好的答案
所以为了更清楚,我不想这样做:
example.com/dashboard/admin 和 example.com/dashboard/user,而只是一个 url example.com/dashboard 并检查用户具有哪个角色。
如果答案真的很明显,我很抱歉,这对我来说是新的,我还没有找到任何好的答案。
像这样的东西应该对你有用。
路线.php
Route::get('/dashboard', ['as'=>'dashboard', 'uses'=> 'DashboardController@dashboard']);
DashboardController.php
use App\Http\Requests;
use App\Http\Controllers\Controller;
use App\User;
use App\Admin;
class DashboardController extends Controller {
public function dashboard(){
if ($this->auth->user()->hasRole('admin') )
{
return $this->showAdminDashboard();
}
elseif ($this->auth->user()->hasRole('user') )
{
return $this->showUserDashboard();
}
else {
abort(403);
}
}
private function showUserDashboard()
{
return view('dashboard.user');
}
private function showAdminDashboard()
{
return view('dashboard.admin');
}
}
每条评论的编辑次数
听起来像这种方法 https://stackoverflow.com/questions/18892830/laravel-same-route-different-controller可能就是您正在寻找的。
<?php
$uses = 'PagesController@notfound';
if( $this->auth->user()->hasRole('admin') )
{
$uses = 'AdminController@index';
}
elseif ($this->auth->user()->hasRole('user') )
{
$uses = 'UsersController@index';
}
Route::get('/dashboard', array(
'as'=>'home'
,'uses'=> $uses
));
也就是说,我觉得 DashboardController 效果更好。我发现在使用仪表板时,我会从打开页面的各种模型中提取有关该网站的统计信息。我只会使用 DashboardController 来获取此一般信息。从仪表板中,我想要包含您要查看/编辑的特定项目的其他页面。这样,如果管理员需要访问查看/编辑与用户相同的信息,则无需重写代码。您只需更新该特定控制器上的安全性即可允许这两个组。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)