类别:Laravel / 日期:2019-11-27 / 浏览:255 / 评论:0

本篇文章给人人带来的内容是关于Laravel5.2中HTTP路由、建立控制器和资本路由的引见(附代码),有肯定的参考价值,有须要的朋侪能够参考一下,愿望对你有所协助。

一、HTTP路由

一切路由都定义在 App\Providers\RouteServiceProvider 类载入的 app/Http/routes.php文件中。

1. 基础路由

简朴的 Laravel 路由只接收一个 URI 和一个闭包

Route::get('foo', function () {
    return 'Hello, Laravel!';
});

关于罕见的 HTTP 要求,Laravel 有以下几种路由

Route::get($uri, $callback); //相应 get 要求
Route::post($uri, $callback);
Route::put($uri, $callback);
Route::patch($uri, $callback);
Route::delete($uri, $callback);
Route::options($uri, $callback);
 
Route::match(['get', 'post'], $uri, $callback); //相应 get, post 要求
Route::any('foo', $callback); //相应一切要求

个中,$callback 能够是一个闭包,也能够是一个控制器要领。实际上,在开辟中有不少状况是用作控制器要领的。  

2. 路由参数

//单个路由参数
Route::get('user/{id}', function ($id) {
    return 'User '.$id;
});
//多个路由参数
Route::get('posts/{post}/comments/{comment}', function ($postId, $commentId) {
    //
});
//单个路由参数(可选)
Route::get('user/{id?}', function ($id = 1) {
    return 'User '.$id;
});
//多个路由参数(可选)
Route::get('posts/{post}/comments/{comment?}', function ($postId, $commentId = 1) {
    //
});
//注重:多个参数时,只能够对末了一个参数设置可选,其他位置设置可选会剖析毛病
 
// 正则束缚单个参数
Route::get('user/{name?}', function ($name = 'Jone') {
    return $name;
})->where('name', '\w+');  //束缚参数为单词字符(数字、字母、下划线)
 
// 正则束缚多个参数
Route::get('user/{id}/{name}', function ($id, $name) {
    //
})->where(['id' => '[0-9]+', 'name' => '[a-z]+']);

二、建立控制器

运用 Artisan 敕令建立 php artisan make:controller UserController

如今,在 app/Http/Controllers 这个控制器目次下就生成了 UserController.php 的控制器文件。

三、高等路由

1. 定名路由

//定名闭包路由
Route:get('user', array('as' => 'alial', function(){});
//或 name 要领链
Route:get('user', function(){})->name('alias');
 
//定名控制器要领路由
Route:get('user', array('uses' => 'Admin\IndexController@index', 'as' => 'alias'));
//或 name 要领链
Route:get('user', 'Admin\IndexController@index')->name('alias'));

2. 路由分组

2.1 路由前缀和定名空间

比方,有两条指向控制器要领的路由

Route::get('admin/login', 'Admin\IndexController@login');
Route::get('admin/index', 'Admin\IndexController@index');

拿第一条来讲,

参数一:admin/login 示意这个 URI 在要求网站根目次下的 admin/login 资本,完全地点就是 http://域名/admin/login (这里开启了 Apache 的路由重写,隐蔽了 “index.php“ ),这个要求被映射到第二个参数中指定的控制器要领。注重,网站根目次是进口文件地点目次,在 Laravel 中就是 public 目次,设置服务器时最好也指向这里。

参数二:Admin\IndexController@login 示意这个控制器要领是在 App\Http\Controllers 定名空间下的,连起来就是 App\Http\Controllers\Admin\IndexController 控制器里的 login 要领。

明显,两条路由的 URI 和 控制器要领 都有雷同的部份,那末,启用路由分组能够提掏出大众部份:

// 第一个数组参数中,prefix 键定义 URI 的大众部份,namespace 键定义要领名(定名空间语法)的大众部份
Route::group(array('prefix' => 'admin', 'namespace' => 'Admin'), function(){
    Route::get('login', 'IndexController@login');
    Route::get('index', 'IndexController@index');
});

2.2 资本路由

资本路由就是映射到资本控制器的路由,Laravel 资本控制器内置了对资本增编削查的 7 个要领以及 7 条路由。

起首,建立资本控制器 ArticleController

php artisan make:controller Admin/ArticleController  --resource

如许就生成了资本控制器在 app/Http/Controllers/Admin/ArticleController.php 文件(Admin 文件夹不存在时会自动建立),内置的 7 个要领以下 :

<?php
 
namespace App\Http\Controllers\Admin;
 
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
 
class LinksController extends Controller
{
    /**
     * 显现一个资本的列表
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //
    }
 
    /**
     * 显现一个表单来建立一个新的资本
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        //
    }
 
    /**
     * 保留最新建立的资本
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        //
    }
 
    /**
     * 显现指定的资本
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
    }
 
    /**
     * 显现一个表单来编辑指定的资本
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        //
    }
 
    /**
     * 更新指定的资本
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        //
    }
 
    /**
     * 删除指定的资本
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        //
    }
}

然后,定义资本路由 。这里我照样挑选在路由分组下定义,定义一条就好

Route::group(array('prefix' => 'admin', 'namespace' => 'Admin'), function(){
    Route::get('login', 'IndexController@login');
    Route::get('index', 'IndexController@index');
    // 资本路由
    Route::resource('article', 'ArticleController');
});

末了,检察路由。有了资本控制器 和 资本路由,就能够看一下对以上 7 个要领的 HTTP 要求体式格局了。

运用 Artisan 敕令 php artisan route:list 列出当前的一切路由,要求体式格局、URI、控制器要领、中间件都排列出来了。

以上就是Laravel5.2中HTTP路由、建立控制器和资本路由的引见(附代码)的细致内容,更多请关注ki4网别的相干文章!

打赏

感谢您的赞助~

打开支付宝扫一扫,即可进行扫码打赏哦~

版权声明 : 本文未使用任何知识共享协议授权,您可以任何形式自由转载或使用。