모든 경로는 AppProvidersRouteServiceProvider 클래스에 의해 로드된 app/Http/routes.php 파일에 정의됩니다.
간단한 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이 될 수 있습니다. 폐쇄 또는 컨트롤러 방법. 실제로 개발 중에는 컨트롤러 메서드가 사용되는 상황이 많이 있습니다.
//单个路由参数 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
이제 컨트롤러 디렉토리 app/Http/에 생성됩니다. 컨트롤러UserController.php의 컨트롤러 파일입니다.
3 고급 라우팅 1. 첫 번째 항목을 예로 들어 보겠습니다.
매개변수 1:
http://domain name/입니다. admin/ login(Apache의 라우팅 재작성은 여기에서 활성화되고 "index.php"는 숨겨짐), 이 요청은 두 번째 매개변수에 지정된 컨트롤러 메소드에 매핑됩니다. 웹사이트 루트 디렉터리는 항목 파일이 위치한 디렉터리이며, 이는 Laravel의 공용 디렉터리이므로 서버를 구성할 때 여기를 가리키는 것이 가장 좋습니다.
매개변수 2:AdminIndexController@login
은 이 컨트롤러 메서드가AppHttpControllers
네임스페이스에 있고 연결이 AppHttpControllersAdminIndexController 컨트롤러의 로그인 메서드임을 의미합니다.
분명히 두 경로의 URI와 컨트롤러 메서드는 동일한 부분을 갖습니다. 그러면 경로 그룹화를 활성화하면 공통 부분을 추출할 수 있습니다. Route는 리소스 컨트롤러에 매핑된 경로입니다. Laravel 리소스 컨트롤러에는 리소스를 추가, 삭제, 수정 및 확인하기 위한 7가지 내장 메소드와 7가지 경로가 있습니다.
먼저 Resource Controller ArticleController
//命名闭包路由 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'));를 생성합니다. 위 명령에 대한 app/Http/Controllers 디렉터리에 Admin 디렉터리가 있는지 확인하세요.
이렇게 하면 app/Http/Controllers/Admin/ArticleController.php 파일에 리소스 컨트롤러가 생성됩니다. 7가지 내장 메소드는 다음과 같습니다.
Route::get('admin/login', 'Admin\IndexController@login'); Route::get('admin/index', 'Admin\IndexController@index');
그런 다음
를 정의합니다. 자원 라우팅
// 第一个数组参数中,prefix 键定义 URI 的公共部分,namespace 键定义方法名(命名空间语法)的公共部分
Route::group(array('prefix' => 'admin', 'namespace' => 'Admin'), function(){
Route::get('login', 'IndexController@login');
Route::get('index', 'IndexController@index');
});
마지막으로 경로를 확인하세요. 리소스 컨트롤러와 리소스 라우팅을 사용하면 위 7가지 메서드에 대한 HTTP 요청 메서드를 살펴볼 수 있습니다.
요청 메소드, URI, 컨트롤러 메소드 및 미들웨어를 포함한 모든 현재 경로를 나열하려면 Artisan 명령
php artisan Route:list을 사용하세요.
위 내용은 Laravel5.2의 HTTP 라우팅 예제와 컨트롤러 생성 및 리소스 라우팅에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!