라우팅 액세스 주소



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;
});