【发布时间】:2015-11-30 12:05:27
【问题描述】:
预告:Laravel 5 是我使用的第一个框架,除了我们多年来创建的自定义框架。我仍在思考这些概念,但大部分都在那里。我的页面调用、授权检查、表单提交和数据库查询都正常工作。
问题:过去我会创建一个新类“Access”,然后我会在需要的任何地方调用所需的函数:
$access = Access::getAccessByAccount($accountID);
我希望以某种方式在 laravel 中做同样的事情,并且能够从控制器中调用这个公共函数。我只是不知道如何调用它以及实际存储函数的位置。
这是我要调用的函数示例:
public function getAccessByAccount($accountID){
//Grab all access rights set to given account ID
$accessList = DB::table('element_access')
->join('element', 'element.id', '=', 'element_access.element_id')
->select('element.name as element', 'element_access.permission as permission')
->where('element_access.account_id', $accountID)
->get();
//Return $access[element] = permission list or false if no access rights are assigned to account ID
if(is_array($accessList)){
$access = array();
foreach($accessList as $item){
$access[$item->element] = $item->permission;
}
return $access;
}else{
return false;
}
}
这是我希望能够以某种方式在控制器中调用它的方式:
<?php namespace App\Http\Controllers\Portal\Admin;
use App\Http\Controllers\Controller;
class AdminController extends Controller {
public function showAdminDashboard(){
$access = Access::getAccessByAccount(Auth::id());
if($access['admin-dashboard'] == 'r'){
return view('portal.admin.dashboard');
}
}
}
编辑:
这是我在检查过的解决方案的帮助下提出的解决方案。
创建新文件:app\Library\Access.php
<?php namespace App\Library;
use DB;
class Access{
public function getElementAccessByAccount($accountID){
//Grab all access rights set to given account ID
return DB::table('element_access')
->join('element', 'element.id', '=', 'element_access.element_id')
->select('element.name as element', 'element_access.permission as permission')
->where('element_access.account_id', $accountID)
->get();
}
}
调用函数:
$access = new \App\Library\Access;
$accessList = $access->getElementAccessByAccount(Auth::id());
【问题讨论】: