摘要:使用時,必須為每個路由定義接受的謂詞,并且任何與這些參數(shù)不匹配的請求都將生成錯誤。使用,可以使用匿名函數(shù)作為控制器,甚至可以在不使用單個控制器的情況下構(gòu)建完整的應(yīng)用程序。通過使用您告訴的方法,該路由將在請求下可用。
路由 ( Routes ) 內(nèi)容 ( Contents )
介紹 Introduction
路由類型 Route types
句法 Syntax
命名空間 Namespaces
前綴 Prefixes
命名路線 Named routes
回調(diào)為路線 Callbacks as routes
組 Groups
資源路線 Resource routes
默認(rèn)控制器 Default controller
參數(shù) Parameters
可選參數(shù) Optional parameters
參數(shù)正則表達式 Parameter regex
“粘性”參數(shù) "Sticky" parameters
介紹 ( Introduction )Luthier CI更改CodeIgniter路由的行為:
在CodeIgniter中,默認(rèn)情況下,可以在任何HTTP謂詞下訪問路由。使用Luthier CI時,必須為每個路由定義接受的HTTP謂詞,并且任何與這些參數(shù)不匹配的請求都將生成404錯誤。
在CodeIgniter中,可以直接從URL訪問控制器,而無需定義路由。另一方面,使用Luthier CI,嘗試訪問未定義的路徑(即使URL與控制器的名稱和方法匹配)也會生成404錯誤。
在CodeIgniter中,路由參數(shù)是指向控制器的簡單正則表達式,在Luthier CI中,路由是一個獨立且唯一的實體,它包含定義明確的參數(shù)以及從中構(gòu)建URL的能力。
在CodeIgniter中,您只能創(chuàng)建指向控制器的路由。使用Luthier CI,可以使用匿名函數(shù)作為控制器,甚至可以在不使用單個控制器的情況下構(gòu)建完整的Web應(yīng)用程序。
路由類型 ( Route types )您可以使用三種類型的路由:
HTTP routes: 它們在HTTP請求下訪問,并在application/routes/web.php文件中定義
AJAX routes: 它們僅在AJAX請求下訪問,并在application/routes/api.php文件中定義
CLI routes: 它們僅在CLI(命令行界面)環(huán)境下訪問,并在application/routes/cli.php文件中定義
AJAX路由進入api.php
雖然你可以在 web.php 文件中定義AJAX路由,但最好這樣做 api.php
如果您使用相同的URL和相同的HTTP動詞定義兩條或更多路線,則第一條路線將被返回ALWAYS
Luthier CI允許您使用動詞GET,POST,PUT,PATCH,DELETE,HEAD,OPTIONS和TRACE定義HTTP路由:
如果您使用過Laravel,那么您將知道如何使用Luthier CI,因為它的語法是相同的。這是路線最簡單的例子:
Route::get("foo", "bar@baz");
第一條路由是獲勝的路由
其中foo是路徑的URL,bar @ baz是它所指向的控制器和方法(由@分隔)的名稱。通過使用get()您告訴Luthier CI 的方法,該路由將在GET請求下可用。
Luthier CI允許您使用動詞GET,POST,PUT,PATCH,DELETE,HEAD,OPTIONS和TRACE定義HTTP路由:
Route::post("foo", "bar@baz"); Route::put("foo", "bar@baz"); Route::patch("foo", "bar@baz"); Route::delete("foo", "bar@baz"); Route::head("foo", "bar@baz"); Route::options("foo", "bar@baz"); Route::trace("foo", "bar@baz");
此外,您可以將具有路徑屬性的數(shù)組作為第三個參數(shù)傳遞(稍后解釋)。
Route::get("test", "controller@method", ["prefix" => "...", "namespace" => "...", (...)] );
要在路由中接受多個HTTP謂詞,請使用以下match()方法:
Route::match(["GET", "POST"], "path", "controller@method", [ (...) ]);命名空間 ( Namespaces )
namespace屬性告訴CodeIgniter控制器所在的子目錄。(注意,這不是PHP名稱空間,它是目錄名稱)
// The controller is located in application/controllers/admin/Testcontroller.php Route::get("hello/world", "testcontroller@index", ["namespace" => "admin"]);前綴 ( Prefixes )
使用該prefix屬性為路由添加前綴:
// The URL will be "admin/hello/world" instead of "hello/world" Route::get("hello/world", "testcontroller@index", ["prefix" => "admin"]);命名路由 ( Named routes )
您可以(事實上,這是可取的)為您的路線指定一個名稱。這將允許您從其他地方調(diào)用它們:
Route::get("company/about_us", "testcontroller@index")->name("about_us");
要通過它的名稱獲取路由,請使用該route()函數(shù),其第一個參數(shù)是路由的名稱,第二個可選參數(shù)是具有該路由的參數(shù)值的數(shù)組。例如,要獲取上一個路由,只需寫route("about_us"):
// http://example.com/company/about_us ">My link!
重復(fù)的名稱 ( Duplicated names )
您不能使用相同的名稱調(diào)用兩個或多個路由
組 ( Groups )您可以使用該group()方法創(chuàng)建路由組,其中第一個參數(shù)是它們共有的前綴,第二個參數(shù)是具有子路由的匿名函數(shù):
Route::group("prefix", function(){ Route::get("bar","test@bar"); Route::get("baz","test@baz"); });
此外,可以為路由組分配共同的屬性。這是擴展語法的示例:
Route::group("prefix", ["namespace" => "foo", "middleware" => ["Admin","IPFilter"]], function(){ Route::get("bar","test@bar"); Route::get("baz","test@baz"); });資源路由 ( Resource routes )
資源路由允許您在單行上為控制器定義CRUD操作(Create, Read, Update, Delete) 例:
Route::resource("photos","PhotosController");
生產(chǎn):
[Name] [Path] [Verb] [Controller action] photos.index photos GET PhotosController@index photos.create photos/create GET PhotosController@create photos.store photos POST PhotosController@store photos.show photos/{id} GET PhotosController@show photos.edit photos/{id}/edit GET PhotosController@edit photos.update photos/{id} PUT, PATCH PhotosController@update photos.destroy photos/{id} DELETE PhotosController@destroy
此外,可以創(chuàng)建部分資源路由,傳遞第三個參數(shù),其中包含要過濾的操作數(shù)組:
Route::resource("photos","PhotosController", ["index","edit","update"]);
生產(chǎn):
[Name] [Path] [Verb] [Controller action] photos.index photos GET PhotosController@index photos.edit photos/{id}/edit GET PhotosController@edit photos.update photos/{id} PUT, PATCH PhotosController@update默認(rèn)控制器 ( Default controller )
Luthier CI自動設(shè)置使用URL / 和HTTP謂詞 GET 定義的任何路由作為默認(rèn)控制器,但是您可以使用 set() 方法和這種特殊語法顯式設(shè)置它:
// Note that the value is binded to the special "default_controller" route of CodeIgniter and you must // use the native syntax: Route::set("default_controller", "welcome/index");回調(diào)為路線 ( Callbacks as routes )
您可以使用匿名函數(shù)(也稱為閉包或lambda函數(shù))而不是指向控制器,例如:
Route::get("foo", function(){ ci()->load->view("some_view"); });
要訪問匿名函數(shù)中的框架實例,請使用該ci()函數(shù)。
參數(shù) ( Parameters )可以在路線中定義參數(shù),以便它們可以是動態(tài)的。要將參數(shù)添加到路徑的某個段,請將其括起來{curly brackets}
Route::post("blog/{slug}", "blog@post");
重復(fù)參數(shù) ( Duplicated parameters )
您不能使用相同名稱調(diào)用兩個或多個參數(shù)
可選參數(shù) ( Optional parameters )要創(chuàng)建可選參數(shù),請?在關(guān)閉大括號之前添加一個:
Route::put("categories/{primary?}/{secondary?}/{filter?}", "clients@list");
請注意,在定義第一個可選參數(shù)后,以下所有參數(shù)必須是可選的。
Routes generated automatically
生成的路由Luthier CI將為您生成所有可選參數(shù)的完整路徑樹,因此您不必?fù)?dān)心編寫除主要路徑之外的更多路徑。
參數(shù)正則表達式 ( Parameter regex )您可以將參數(shù)限制為正則表達式:
// These are the equivalents of (:num) and (:any), respectively: Route::get("cars/{num:id}/{any:registration}", "CarCatalog@index");
此外,您可以使用具有以下{([expr]):[name]}語法的自定義正則表達式:
// This is equivalent to /^(es|en)$/ Route::get("main/{((es|en)):_locale}/about", "about@index");“粘性”參數(shù) ( "Sticky" parameters )
您可能需要在一組路由中定義一個參數(shù),然后在所有子路由中都可以使用該參數(shù),而不必在所有控制器中的所有方法的參數(shù)中定義它,這很繁瑣。考慮到這一點,Luthier CI提供了所謂的Sticky參數(shù)。粘性參數(shù)以下劃線(_) 開頭并具有一些奇點:
它不會傳遞給路徑指向的控制器方法的參數(shù)。
在共享粘合劑參數(shù)的所有子路徑中,將從URL中獲取值,并將在route()函數(shù)中自動提供,因此您可以省略它,或覆蓋任何其他值。
考慮這個例子:
Route::group("shop/{_locale}", function() { Route::get("category/{id}", "ShopCategory@categoryList")->name("shop.category"); Route::get("product/{id}/details", "ShopProduct@details")->name("shop.product.details"); });
路由shop.category并shop.product.details共享_locale粘性參數(shù)。雖然該參數(shù)必須位于URL中,但route()在此上下文中使用該函數(shù)時,并不強制它出現(xiàn)在參數(shù)值數(shù)組中。當(dāng)您需要鏈接到當(dāng)前路徑的其他變體時,這尤其有用:
// If the URL is "shop/en/category/1", {_locale} will be "en" here: echo route("shop.category", ["id" => 1]); # shop/en/category/1 echo route("shop.category", ["id" => 2]); # shop/en/category/2 echo route("shop.category", ["id" => 3]); # shop/en/category/3 // You can overwrite that value for any other: echo route("shop.category", ["_locale" => "es", "id" => 1]); # shop/es/category/1
粘性參數(shù)的一個優(yōu)點是您不必將它們定義為指向控制器的所有方法的參數(shù)。在前面的示例中,在ShopCategory和ShopProduct控制器中,它們的方法將只有一個參數(shù):$id,因為它是路由器提供的唯一參數(shù):
要獲取sticky參數(shù)的值,請使用控制器中屬性的param()方法route:
route->param("_locale"); } }
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/31398.html
摘要:寫入權(quán)限確保該文件夾具有寫入權(quán)限,以便這些命令正常工作僅適用于開發(fā)出于安全原因,如果您的應(yīng)用程序配置了或環(huán)境,則將禁用這些命令激活默認(rèn)情況下禁用工具。 命令行 Command line 內(nèi)容 Contents 介紹 Introduction 句法 Syntax 使用CLI路由 Using CLI routes 內(nèi)置CLI工具 Built-in CLI tools 激活 Ac...
摘要:訪問控制列表的配置與訪問控制列表使用的類別和權(quán)限類別組的名稱和的關(guān)聯(lián)排列。 簡單的認(rèn)證 SimpleAuth 內(nèi)容 Contents 介紹 Introduction 安裝 Installation 第1步:復(fù)制所需的文件 Step 1: Copy the required files 第2步:安裝數(shù)據(jù)庫 Step 2: Install the database 第3步:定義...
摘要:歡迎關(guān)于是的一個插件,增加了有趣的功能,旨在簡化大型網(wǎng)站和的構(gòu)建。它是為了盡可能地與框架集成,因此在安裝后,應(yīng)用程序中已存在的所有內(nèi)容應(yīng)該繼續(xù)正常工作。在大多數(shù)情況下,安裝不會超過分鐘社區(qū)和支持要報告錯誤并提出更改,請訪問上的存儲庫 歡迎 關(guān)于Luthier CI Luthier CI是CodeIgniter的一個插件,增加了有趣的功能,旨在簡化大型網(wǎng)站和API的構(gòu)建。 它是為了盡可能...
摘要:返回表示用戶的對象。相反,存儲使用單向加密算法生成的哈希。例刪除當(dāng)前會話要從當(dāng)前身份驗證會話中刪除所有數(shù)據(jù)包括當(dāng)前存儲的經(jīng)過身份驗證的用戶,請使用靜態(tài)方法用戶操作有兩種操作可用于對經(jīng)過身份驗證的用戶執(zhí)行角色驗證和權(quán)限驗證。檢查密碼重置請求。 Luthier CI 認(rèn)證框架 ( Authentication Framework ) 內(nèi)容 Contents 介紹 Introduct...
摘要:中間件執(zhí)行點有兩個執(zhí)行點此時定義的中間件將在控制器構(gòu)造函數(shù)之后執(zhí)行,但在執(zhí)行任何控制器操作之前執(zhí)行。控制器構(gòu)造函數(shù)始終首先執(zhí)行這是的行為,而不會對其進行修改。添加后綴避免沖突的一種方法是將后綴添加到中間件名稱。 中間件 Middleware 內(nèi)容 Contents 介紹 Introduction 中間值執(zhí)行點 Middleware execution points 創(chuàng)建中間件 C...
閱讀 860·2021-11-25 09:44
閱讀 1063·2021-11-19 09:40
閱讀 7062·2021-09-07 10:23
閱讀 1975·2019-08-28 17:51
閱讀 1106·2019-08-26 10:59
閱讀 1928·2019-08-26 10:25
閱讀 3131·2019-08-23 18:22
閱讀 865·2019-08-23 16:58