laravel常用用法:
参考:https://blog.youkuaiyun.com/gaokcl/article/details/82314996
一,权限路由:
//管理员用户列表
Route::get('/admin_user', 'AdminUserController@index');
//添加管理员用户 添加表单页面
Route::get('/admin_user/create', 'AdminUserController@create');
//添加管理员用户 添加页面的提交按钮
Route::get('/admin_user/store/{admin_user_id}', 'AdminUserController@store');
//显示管理员用户详情
Route::get('/admin_user/{admin_user_id}', 'AdminUserController@show');
//修改管理员用户 修改表单页面
Route::get('/admin_user/edit/{admin_user_id}', 'AdminUserController@edit');
//修改管理员用户 修改页面的提交按钮
Route::get('/admin_user/update/{admin_user_id}', 'AdminUserController@update');
//删除管理员用户
Route::get('/admin_user/destroy/{admin_user_id}','AdminUserController@destroy');
2,获取系统权限的值:
<?php
//获取域名或主机地址
echo $_SERVER['HTTP_HOST']."<br>";
//获取网页地址
echo $_SERVER['PHP_SELF']."<br>";
//获取网址参数
echo $_SERVER["QUERY_STRING"]."<br>";
//来源网页的详细地址
echo $_SERVER['HTTP_REFERER']."<br>";
?>
二,Rbac:
1,新建模型Models
//创建 权限 的模型,用来 指定 字段名
php artisan make:model Models\Admin\AdminPermission
//创建 权限+角色 的中间模型
php artisan make:model Models\Admin\AdminPermissionRole
//创建 角色 的模型
php artisan make:model Models\Admin\AdminRole
//创建 角色+用户 的模型
php artisan make:model Models\Admin\AdminRoleUser
//创建 用户 的模型
php artisan make:model Models\Admin\AdminUser
2,创建控制器的方法:
1,index() 列表
2, create() 显示增加表单
3,store(Request $request) 增加 提交 按钮
4,show($id) 详情
5,edit($id) 显示修改表单
6,update(Request $request, $id) 修改表单的修改按钮
7,destroy($id) 删除的按钮
3,创建中间件:
php artisan make:middleware Rbac
4,注册中间件:
APP/Http/Kernel:
' rbac = ; '
二,设计 路由 与 控制器
1,权限
//权限列表
Route::get('/admin/permission','Admin\PermissionController@index');
//创建 权限列表 控制器
php artisan make:controller Admin\PermissionController
2,角色
php artisan make:controller Admin\RoleController
1,查询 用户—角色中间表
select * from role_users where user_id =1
2, left join 角色对应的权限取出来
select * from role_users left join where user_id =1
3,用户角色表中的角色权限---查出 userid , roleid , permissionid ,roleid1
select * from role_users left join
permissin_role
on role_user.role_id = permissin_role.role.id
where role_user.user_id =1
原生的代码
select permissons.* from role_user
left join permission_role on role_user.role_id = permission_role.role.id
left join permission on permission_role.permission_id=permissions.id
where role_user.user_id=1
group by permissions.id
查询当前的路由:
dd($current = Route::current()->uri());
12,修改的laravel文件:
Providers/AppServiceProvider.php
13,新建
mater.blade.php 或者 permissionRole
14,Route报错解决:
php artisan ide-helper:generate
composer install
15,mater.blade.php的存在的意义:
<!--左侧导航 开始-->
<div class="menu_box">
<ul>
@foreach($tree as $key => $value)
<li>
<h3><i class="fa fa-fw fa-clipboard"></i>{{$key}}</h3>
<ul class="sub_menu">
@foreach($value as $v)
<li>
<a href="{{url($v->name)}}" >
<i class="fa fa-fw fa-plus-square"></i>
{{$v->display_name}}
</a>
</li>
@endforeach
</ul>
</li>
@endforeach
</ul>
</div>
===> 作用:显示错误的信息提示,用来提示权限是否可以访问
<!--底部 结束-->
@if(session('mess'))
<script>
$(".alert").html('{{session('mess')}}').show().delay(1000).fadeOut(1000);
</script>
@endif
16,创建用户分配的权限表,permission-role
创建控制器:
php artisan make:controller Admin\PermissionRoleController
php artisan make:controller Admin\AdminController
三,artisan 创建命令有关
1,验证码的使用:
composer require mews/captcha
先在composer.json中
"autoload": {
"classmap": [
"database"
],
"psr-4": {
"App\\": "app/"
}
},
改为
"autoload": {
"classmap": [
"database"
],
"psr-4": {
"App\\": "app/"
},
"files":[
"App/Function/function.php"
]
},
作用:
加载引用的封装函数--在APP下加一个文件夹
composer dump-autoload
便可以在laravel框架中调用加载的自定义函数,例如getTree();
1,使用artisan命名创建控制器
在controllers目录中创建一个UserController
php artisan make:controller Admin\UserController
php artisan make:controller Home\CarouselController
php artisan make:controller Admin\TopicController
php artisan make:controller PageController
php artisan make:controller SendSMSController
2,定义中间件app\http
php artisan make:middleware CheckLogin
3,导出laravel中提供的分页视图
php artisan vendor:publish --tag=laravel-pagination
在pagination 中将default.blade.php的视图copy到自定义的视图
4,创建迁移目录
php artisan make:migration create_user_table
5,创建模型
app下
php artisan make:model Model\User
php artisan make:model Models\TmpPhone
php artisan make:model Models\Admin\Topic
或者
php artisan make:model User
&&, 用户认证 Auth :
1,创建 Auth :
php artisan make:auth
在路由web.php中会多,Auth::routes(),可以搜索auth
Route::get('/home','HomeController@index');
在resource/views/auth
在resource/views/Layouts/app.blade.php 中使用asset改变绝对js路径
四,参考后台权限:
1,在app/providers/appserviceprovider中的boot只写:
view()->composer(
'*', 'App\Http\viewComposer'
);
2,在App\Http\下建viewComposer.php
<?php
namespace App\Http;
use Illuminate\Contracts\View\View;
use App\Models\RoleUser;
use Illuminate\Support\ServiceProvider;
class viewComposer
{
public function compose(View $view)
{
// 用户id
$user=session()->get('user');
if(!$user){
return redirect('admin/login');
}
$id=$user[0]->id;
// 查询用户当前登录用户的权限
$permissions = RoleUser::select('permissions.*')
->LeftJoin('permission_role', 'permission_role.role_id', 'role_user.role_id')
->LeftJoin('permissions', 'permissions.id', 'permission_role.permission_id')
->where('role_user.user_id',$id)
->where('permissions.is_menu',0)
->groupBy('permissions.id')
->get();
// 得到数组的结构
// dd($permissions);
$tree = array();
foreach ($permissions as $permission)
{
if ($permission->parent_id==0)
{
// 顶级权限分类作为标识
foreach ($permissions as $item) {
// 找到顶级分类下的权限并将其赋给新的对象
if ($permission->id==$item->parent_id)
{
$tree[$permission->display_name][]=$item;
}
}
}
}
//dd($tree);
$view->with('tree', $tree)->with('adminuser',$user);
}
}