라우팅 액세스 주소
Routing to Controller/Operation
가장 일반적으로 사용되는 라우팅 방식으로, 조건에 맞는 라우팅 규칙을 해당 컨트롤러와 오퍼레이션에 라우팅한 후, 시스템이 해당 오퍼레이션을 스케줄링하고 실행합니다. 형식은 다음과 같습니다.
Controller/Operation
구문 분석 규칙은 작업에서 구문 분석을 시작한 다음 컨트롤러를 구문 분석하는 것입니다. 예:
// 路由到blog控制器 Route::get('blog/:id','Blog/read');
Blog 클래스는 다음과 같이 정의됩니다.
<?php namespace app\index\controller; class Blog { public function read($id) { return 'read:' . $id; } }
다중 레벨 컨트롤러가 지원됩니다. 라우팅 주소에서 다음 메서드를 사용하여 설정합니다.
Route::get('blog/:id','group.Blog/read');
는 다음 컨트롤러 클래스로의 라우팅을 의미하며,
index/controller/group/Blog
는 동적 애플리케이션, 컨트롤러 또는 작업으로의 라우팅도 지원할 수 있습니다. 예:
// action变量的值作为操作方法传入 Route::get(':action/blog/:id', 'Blog/:action');
클래스 메서드로의 라우팅
이 모드 라우팅은 모든 클래스의 메서드 실행을 지원할 수 있으며 컨트롤러 작업 메서드의 실행에만 국한되지 않습니다.
라우팅 주소의 형식은 (동적 메서드):
완전한 클래스 이름@메소드 이름
또는 (정적 메서드)
완전한 클래스 이름::메서드 이름
예를 들어
Route::get('blog/:id','\app\index\service\Blog@read');
은 읽기를 실행합니다. appindexserviceBlog 클래스 메소드.
또한 다음과 같은 특정 정적 메서드 실행을 지원합니다. 템플릿 출력을 직접 렌더링합니다.
Route::get('blog/:id','\app\index\service\Blog::read');
는 이 경로가 현재 애플리케이션에서 view/index/hello.html 템플릿 파일의 출력을 렌더링한다는 의미입니다.
현재 요청의 param 변수는 템플릿 파일에 직접 출력될 수 있습니다. 추가 템플릿 변수를 추가해야 하는 경우 다음을 사용할 수 있습니다.
Route::redirect('blog/:id', 'http://blog.thinkphp.cn/read/:id', 302);이름 및 도시 변수는 템플릿에 출력될 수 있습니다.
// 路由到模板文件 Route::view('hello/:name', 'index/hello');
응답 객체로 라우팅
Route::view('hello/:name', 'index/hello', ['city'=>'shanghai']);리소스 파일 요청에 대해 404 액세스를 직접 설정하는 경우가 더 많습니다
Hello,{$name}--{$city}!
클로저로 라우팅
클로저를 사용하면 컨트롤러의 작업 메서드를 실행하지 않고도 특별한 요구 사항이 있는 일부 경로를 정의할 수 있습니다. 예: Route::get('hello/:name', response()
->data('Hello,' . $name)
->code(200)
->contentType('text/plain'));
매개변수 전달
클로저가 정의될 때 매개변수 전달을 지원합니다. 예:
// 对于不存在的static目录下的资源文件设置404访问 Route::get('static', response()->code(404));
규칙 라우팅에 정의된 동적 변수의 이름은 특별한 순서 없이 클로저 함수의 매개변수 이름입니다. 따라서 우리가 방문하는 URL 주소가
Route::get('hello', function () { return 'hello,world!'; });인 경우 브라우저 출력은 다음과 같습니다. Hello, thinkphp
Dependency Insertion
클로저에 종속성 주입을 사용할 수 있습니다. 예:
Route::get('hello/:name', function ($name) { return 'Hello,' . $name; });