Laravel基础到进阶

一般步骤

  1. cd到Homestead文件夹下,运行下面的命令
vagrant up #启动虚拟机
vagrant ssh #进入到虚拟机中
  1. 创建一个新的项目
  • 在虚拟机的code文件夹下运行下面的命令
laravel new name
  • 配置多站点

修改Homestead.yaml文件,然后重启虚拟机

vagrant provision

基础

向视图传递数据

  • 通过with传递
//控制器中
public function add(){
    return view('add')->with('name',Auth::user()->name);
}
//视图文件中获取
<p>{{$name}}</p>
  • 通过get方式传递数据
//比如url为blog.test/article?id=2
//在控制器中
public function test(Request $request){
    $id=$request->input('id');
    return view('test')->with('id',$id);
}
//在数据显示界面
<p>{{$id}}</p>

post方式提交表单

//视图中,其中action的值为路由
<form method="POST" action="addArticle">
    @csrf

    <div class="form-group row">
        <label for="title" class="col-md-2 col-form-label text-md-right">{{ __('题目') }}</label>

        <div class="col-md-8">
            <input id="title" type="text" class="form-control" name="title" placeholder="请输入文章题目" required autofocus>
        </div>
    </div>
    <div class="form-group row mb-0">
        <div class="col-md-8 offset-md-2">
            <button type="submit" class="btn btn-primary">
                {{ __('提交') }}
            </button>
        </div>
    </div>
</form>

//控制器中
public function addArticle(Request $request){
    $title = $request->input('title');
    $author = $request->input('author');
    $article = $request->input('article');
    return redirect('/');//重定向至首页
}

表单验证

$title=$request->input('title');

$author=$request->input('author');

$message=$request->input('message');

$date=$request->input('date');

//表单验证

//控制器中

$validatedData = $request->validate([

    'title' => 'required|max:50',
    'author'=>'required',
    'message' => 'required',
    'date'=>'required',

],[

    'title.required'=>'文章题目不能为空',
    'title.max'=>'题目不能超过25字',
    'author.required'=>'作者不能为空',
    'message.required'=>'内容不能为空',
    'date.required'=>'发送时间不能为空',

]);

通过模型连接数据库

//创建一个模型

php artisan make:model Flight

//在模型中写

protected $table = 'articles';//选择的表

protected $fillable = ['id','title','message','author','date','ip'];//表中要用到的字段

protected $primaryKey='id';//设置主键

public $timestamps = false;//时间戳禁用

//如何使用模型

//第一步,在控制器的开始引入模型

use App\Article;

//第二步在具体的方法中编写代码

//查询数据

//在控制器中

$article = new Article();

$title = Article::all();

return view('test')->with('title',$title);

//在视图中

@foreach($title as $value)

    <p>{{$value['title']}}</p>

@endforeach

//插入数据

$article = new Article();

$article->title = $request->title;

$article->save();

//更新数据

App\Flight::where('id', 1)

    ->update(['title' => '更新后的']);

//删除数据

$article = Article::find(1);

$article->delete();

分页

//控制器中

$article = new Article();

//$title = Article::all();

$title = Article::paginate(1);

return view('test')->with('title',$title);

//视图中

@foreach($title as $value)
    
    <p>{{$value['title']}}</p>

@endforeach

<nav>
	<ul class="pagination">

		<li class="page-item">{{ $title->links() }}</li>

	</ul>
</nav>

中级

用户权限管理

方法一:Gate和Policy

  1. 简单说一下,权限管理就是一种制定规则和实施规则的过程,Gate和Policy负责制定规则,控制器、路由、视图负责实施规则
  2. 基本使用
  • 使用闭包创建一个基本的规则
//app/Providers/AuthServiceProvider.php
<?php

namespace App\Providers;

use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Gate;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;

class AuthServiceProvider extends ServiceProvider
{
    /**
     * The policy mappings for the application.
     *
     * @var array
     */
    protected $policies = [
        // 'App\Model' => 'App\Policies\ModelPolicy',
    ];

    /**
     * Register any authentication / authorization services.
     *
     * @return void
     */
    public function boot()
    {
        $this->registerPolicies();
        //创建一个规则,返回true就代表有权限,返回false代表没有权限
        Gate::define('admin-manage',function(){
            if(Auth::user()->role === 'admin'){
                return true;
            }
            return false;
        });
    }
}

  • 使用Policy创建一个规则
//命令行运行 php artisan make:policy PostPolicy

//app/Policies/PostPolicy
//创建一个新的方法
public function admin_manage(){
    if(Auth::user()->role === 'admin'){
       return true;
    }
    return false;
}

//AuthServiceProvider.php
Gate::define('admin-manage','App\Policies\AdminPolicy@admin_manage');
  • 控制器中判断用户是否有权限干啥啥啥
//web.php
Route::get('/admin','ViewController@admin')->name('admin');

//ViewController.php

//特别注意:Gate的路径是下边这个,千万别写错了
use Illuminate\Support\Facades\Gate;
use Illuminate\Support\Facades\Auth;

//如果用户有权限则可以访问,没有权限就返回404页面
public function admin(){
        if(Gate::allows('admin-manage',Auth::user())){
            return view('admin/dashboard');
        }
        abort(404);
 }
  • 视图中判断有权限就显示啥啥啥
//app.blade.php

@can('admin-manage',Auth::user())
    <li class="nav-item">
        <a class="nav-link" href="{{ route('admin') }}">管理中心</a>
    </li>
@endcan

方法二:中间件

  1. 创建
php artisan make:middleware CheckAge
  1. 注册中间件
//在app/Http/Kernel.php中的$routeMiddleware那一块中,最后加入下面的代码

'admin'=> \App\Http\Middleware\Admin::class,//其中admin为自定义的中间件名,后边那一堆为中间件的路径
  1. 中间件的文件中修改成以下代码
public function handle($request, Closure $next)
{
	if (!Auth::check()) {
		return redirect()->route('login');   //没登录时重定向到登录页面
	}
    return $next($request);
}
  1. 中间件的使用
//在路由中

Route::any('/add','AddController@add')->middleware('admin');

猜你喜欢

转载自blog.csdn.net/qq_42094066/article/details/88529490
今日推荐