目錄
一、HTTP路由
1. 基本路由
2.路由參數
二、建立控制器
三、進階路由
1. 命名路由
2.路由分組
首頁 後端開發 php教程 Laravel5.2中HTTP路由與建立控制器以及資源路由的範例詳解

Laravel5.2中HTTP路由與建立控制器以及資源路由的範例詳解

Sep 11, 2017 am 09:54 AM
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 目錄。

這樣就產生了資源控制器在app/Http/Controllers/Admin/ArticleController.php 文件,內建的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(&#39;prefix&#39; => &#39;admin&#39;, &#39;namespace&#39; => &#39;Admin&#39;), function(){ 
    Route::get(&#39;login&#39;, &#39;IndexController@login&#39;);
    Route::get(&#39;index&#39;, &#39;IndexController@index&#39;);
    // 资源路由
    Route::resource(&#39;article&#39;, &#39;ArticleController&#39;);
});
登入後複製

最後,查看路由。有了資源控制器 和 資源路由,就可以看一下對以上 7 個方法的 HTTP 請求方式了。

使用 Artisan 指令 php artisan route:list  列出目前的所有路由,請求方式、URI、控制器方法、中間件都羅列出來了。

以上是Laravel5.2中HTTP路由與建立控制器以及資源路由的範例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Windows 11 上正確校準 Xbox One 控制器的方法 Windows 11 上正確校準 Xbox One 控制器的方法 Sep 21, 2023 pm 09:09 PM

由於Windows已成為首選的遊戲平台,因此確定其面向遊戲的功能就顯得尤為重要。其中之一是能夠在Windows11上校準XboxOne控制器。借助內建的手動校準,您可以擺脫漂移、隨機移動或效能問題,並有效地對齊X、Y和Z軸。如果可用選項不起作用,您可以隨時使用第三方XboxOne控制器校準工具。讓我們來了解一下!如何在Windows11上校準我的Xbox控制器?在繼續操作之前,請確保將控制器連接到電腦並更新XboxOne控制器的驅動程式。當您使用它時,也要安裝任何可用的韌體更新。 1.使用Wind

http狀態碼520是什麼意思 http狀態碼520是什麼意思 Oct 13, 2023 pm 03:11 PM

http狀態碼520是指伺服器在處理請求時遇到了一個未知的錯誤,無法提供更具體的資訊。用於表示伺服器在處理請求時發生了一個未知的錯誤,可能是由於伺服器配置問題、網路問題或其他未知原因導致的。通常是由伺服器配置問題、網路問題、伺服器過載或程式碼錯誤等原因導致的。如果遇到狀態碼520錯誤,最好聯絡網站管理員或技術支援團隊以取得更多的資訊和協助。

http狀態碼403是什麼 http狀態碼403是什麼 Oct 07, 2023 pm 02:04 PM

http狀態碼403是伺服器拒絕了客戶端的請求的意思。解決http狀態碼403的方法是:1、檢查身份驗證憑證,如果伺服器要求身份驗證,確保提供正確的憑證;2、檢查IP位址限制,如果伺服器對IP位址進行了限制,確保客戶端的IP位址被列入白名單或未列入黑名單;3、檢查文件權限設置,如果403狀態碼與文件或目錄的權限設置有關,確保客戶端具有足夠的權限訪問這些文件或目錄等等。

瞭解網頁重定向的常見應用場景並了解HTTP301狀態碼 瞭解網頁重定向的常見應用場景並了解HTTP301狀態碼 Feb 18, 2024 pm 08:41 PM

掌握HTTP301狀態碼的意思:網頁重定向的常見應用場景隨著網路的快速發展,人們對網頁互動的要求也越來越高。在網頁設計領域,網頁重定向是一種常見且重要的技術,透過HTTP301狀態碼來實現。本文將探討HTTP301狀態碼的意義以及在網頁重新導向中的常見應用場景。 HTTP301狀態碼是指永久重新導向(PermanentRedirect)。當伺服器接收到客戶端發

從零開始學習Laravel:控制器方法呼叫詳解 從零開始學習Laravel:控制器方法呼叫詳解 Mar 10, 2024 pm 05:03 PM

從零開始學習Laravel:控制器方法呼叫詳解在Laravel的開發中,控制器是一個非常重要的概念。控制器起到了連接模型和視圖的橋樑作用,負責處理來自路由的請求,並返回相應的資料給視圖展示。控制器中的方法可以被路由調用,這篇文章將詳細介紹如何編寫並調用控制器中的方法,同時會提供特定的程式碼範例。首先,我們需要建立一個控制器。可以使用Artisan命令列工具來生

如何使用Nginx Proxy Manager實現HTTP到HTTPS的自動跳轉 如何使用Nginx Proxy Manager實現HTTP到HTTPS的自動跳轉 Sep 26, 2023 am 11:19 AM

如何使用NginxProxyManager實現HTTP到HTTPS的自動跳轉隨著互聯網的發展,越來越多的網站開始採用HTTPS協議來加密傳輸數據,以提高數據的安全性和用戶的隱私保護。由於HTTPS協定需要SSL憑證的支持,因此在部署HTTPS協定時需要有一定的技術支援。 Nginx是一款強大且常用的HTTP伺服器和反向代理伺服器,而NginxProxy

使用http.PostForm函數傳送帶有表單資料的POST請求 使用http.PostForm函數傳送帶有表單資料的POST請求 Jul 25, 2023 pm 10:51 PM

使用http.PostForm函數發送帶有表單資料的POST請求在Go語言的http包中,可以使用http.PostForm函數發送帶有表單資料的POST請求。 http.PostForm函數的原型如下:funcPostForm(urlstring,dataurl.Values)(resp*http.Response,errerror)其中,u

HTTP 200 OK:了解成功回應的意義與用途 HTTP 200 OK:了解成功回應的意義與用途 Dec 26, 2023 am 10:25 AM

HTTP狀態碼200:探索成功回應的意義與用途HTTP狀態碼是用來表示伺服器回應狀態的數字代碼。其中,狀態碼200表示請求已成功被伺服器處理。本文將探討HTTP狀態碼200的具體意義與用途。首先,讓我們來了解HTTP狀態碼的分類。狀態碼分為五個類別,分別是1xx、2xx、3xx、4xx和5xx。其中,2xx表示成功的回應。而200是2xx中最常見的狀態碼

See all articles