在laravel框架中,如何訪問指定控制器中的資訊內,在laravel框架中如果你想要訪問指定的控制器內的方法時,你需要進行路由註冊,只有進行過路由註冊的地址才能夠訪問,不然的話會顯示404,那麼如何進行路由註冊呢,下面的內容就是如何進行路由註冊一級路由註冊的規則
所有的 Laravel 路由都在 routes 目錄中的路由檔案中定義,這些檔案都由框架自動載入。routes/web.php 檔案用於定義 web 介面的路由。這裡面的路由都會被分配給 web 中介軟體組,它提供了會話狀態和 CSRF 保護等功能。定義在 routes/api.php 中的路由都是無狀態的,並且被分配了 api 中介軟體組
這裡我的域名為:local.test.com
一:可用的路由註冊方法:
Route::get($uri, $callback); #get請求路由
Route::post($uri, $callback); #post請求路由
Route::put($uri, $callback); #put請求路由
Route::patch($uri, $callback);#patch請求路由
Route::delete($uri, $callback);#delete請求路由
Route::options($uri, $callback);#options請求路由
Route::match(['get', 'post'], $uri,$callback);#多種請求路由
Route::any($uri, $callback);#所有請求路由
指向 web 路由檔案中定義的 POST、PUT 或 DELETE 路由的任何 HTML 表單都應該包含一個 CSRF 令牌欄位,否則,這個請求將會被拒絕
<form method="POST" action="/profile">
{{ csrf_field() }}
...
</form>
二:基本路由註冊方法
1:路由直接輸出
在routes/web.php檔案中新增:
Route::get('test', function () {
return 'Hello World';
});
在瀏覽器上輸入local.test.com/test時瀏覽器上輸出的是Hello World
2:路由訪問控制器
在routes/web.php檔案中新增:
Route::get('test', 'TestController@index');
然後在app/Http/Controllers目錄下新建一個TestController.php檔案
<?php
namespace App\Http\Controllers;
use Illuminate\Routing\Controller as BaseController;
class TestController extends BaseController {
public function index() {
return '11';
}
}
在瀏覽器上輸入local.test.com/test時瀏覽器上輸出的是11
3:重定向路由
在routes/web.php檔案中新增:
Route::redirect('/here', '/there', 301);
表示的是瀏覽器訪問local.test.com/here就會重定向到local.test.com/there
4:檢視路由
在routes/web.php檔案中新增:
Route::view('/test', 'test');
上述程式碼表示的是不經過控制器直接渲染檢視檔案test.php,在resources/views目錄下新建一個test.php檔案,裡面寫上html程式碼,然後在瀏覽器訪問local.test.com/test是顯示的就是test.php內的html程式碼內容
還可以像檢視檔案傳遞引數,例:
Route::view('/test', 'test',['name' => 'nihao']);
在html中使用<?= $name?>使用傳遞來的引數
5:路由引數
在routes/web.php檔案中新增:
Route::get('test/{id}', function ($id) {
return $id;
});
在瀏覽器上輸入local.test.com/test/10,這時候瀏覽器上顯示的是10
你還可以對傳遞的引數進行校驗
Route::get('test/{id}', function ($id) {
//
})->where('id', '[0-9]+');
上述的檢測是id引數必須是數字,如果這時候你輸入的是local.test.com/test/abc,這時候顯示的是404,你輸入local.test.com/test/1時,正確
如果檢測的引數是多個的話,where裡的引數是一個陣列,例:
Route::get('test/{id}/{name}', function ($id, $name) {
//
})->where(['id' => '[0-9]+', 'name' => '[a-z]+']);
6:配置全域性約束
修改app/Providers目錄下的RouteServiceProvider.php檔案的boot方法:
這裡我配置所有的id引數必須是數字:
public function boot() {
Route::pattern('id', '[0-9]+');
parent::boot();
}
配置完成之後訪問有id引數的url是如果id你輸入的不是數字,這時候顯示的是404
7:命名路由
命令路由簡單來說就是給路由起別名
例:
在routes/web.php檔案中新增:
Route::get('test/test', 'TestController@test')->name('test');
然後在另一個路由對應的方法中輸入
// 生成 URL...
$url = route('test');
// 生成重定向...
return redirect()->route('test');
8:中介軟體配置約束
(1):建立一箇中介軟體
使用命令列在專案目錄下輸入
php artisan make:middleware CheckAge #Check 表示中介軟體檔名稱
這時候在App/Http/Middleware目錄下就會生成一個Check.php檔案
修改CheckAge.php 檔案:
<?php
namespace App\Http\Middleware;
use Closure;
class Check
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if ($request->route()->named('profile')) {
return redirect('/test');
}
return $next($request);
}
}
(2):註冊中介軟體
在app/Http/Kernel.php檔案中的$routeMiddleware變數中新增:
'check' => \App\Http\Middleware\Check::class,
(3):配置中介軟體約束
在routes/web.php檔案中:
Route::middleware(['check'])->group(function () {
Route::get('/', function () {
// 使用 check 中介軟體
});
Route::get('/test', function () {
// 使用 check 中介軟體
});
});
Route::middleware(['check'])->group內的所有路由配置都遵循check.php中介軟體的規則