>  기사  >  PHP 프레임워크  >  Laravel 강의 2: 경로 정의 및 컨트롤러 바인딩

Laravel 강의 2: 경로 정의 및 컨트롤러 바인딩

齐天大圣
齐天大圣원래의
2020-12-08 22:31:081864검색

우리는 네트워크의 라우터가 경로를 선택하고 패킷을 전달하는 데 사용된다는 것을 알고 있습니다. 그렇다면 프레임워크의 경로는 무엇에 사용됩니까? 여기서 경로는 http 요청을 받는 경로이며, 해당 경로를 설정하여 특정 프로그램의 기능에 접근할 수 있습니다. 라우팅은 프레임워크의 핵심 기능 중 하나이며 기본적으로 모든 주류 프레임워크에는 라우팅 기능이 있습니다. 또한 길고 깊은 경로를 짧고 얕은 경로로 변환하도록 라우팅을 설정할 수 있습니다(SEO에 매우 유용한 기능).

기본 라우팅 파일

모든 laravel 경로는 루트 디렉터리의 경로 디렉터리에 있는 라우팅 파일에 정의됩니다. 프레임워크는 기본적으로 이 디렉터리에 파일을 자동으로 로드합니다. Routes/web.php 파일을 살펴보겠습니다

use Illuminate\Support\Facades\Route;

Route::get('/', function () {
    return view('welcome');
});

Basic Routing

이제 web.php 파일에서 가장 간단한 새로운 Route를 생성합니다. 코드는 다음과 같습니다:

Route::get('index', function () {
    return "study laravel";
});

이제, 우리는 브라우저에 localhost:8000/index를 입력하면 "study laravel"이라는 문장을 볼 수 있습니다.

일반적인 라우팅 방법

위에서 언급한 get 방법 외에도 일반적으로 사용되는 라우팅 방법은 post, put, delete, any, match입니다.

여기서 any 메소드는 요청 메소드가 무엇이든 get/post/put 및 기타 요청 메소드가 될 수 있으며 모두 처리한다는 의미입니다. Match를 사용하여 여러 요청을 지정할 수 있습니다. 다음은 match의 사용법을 보여줍니다.

Route::match(['get', 'post'], "list", function ()
{
    return 'list';
});

매개변수 전달

종종 경로에 매개변수를 추가합니다. 예를 들어 /news/1은 매우 일반적입니다. lavarel의 라우팅 방법은 다음과 같은 매개변수 전달을 지원합니다.

Route::get('news/{id}', function ($id) {
    return 'news:' . $id;
});

위 경로는 매개변수를 전달할 수 있지만 여전히 내 요구 사항을 충족할 수 없습니다. 매개변수 {id}가 숫자여야 한다면 다음과 같을 수 있습니다.

Route::get('news/{id}', function ($id) {
    return 'news:' . $id;
})->where('id', '\d+');

us 여러 매개변수를 전달할 수도 있으며 클로저의 매개변수는 다음과 같이 자동으로 일대일로 대응됩니다.

Route::get('/name/{name}/age/{age}', function($name, $age) {
    echo "name:$name age:$age";
})->where(['name' => '\w+', 'age' => '\d+']);

라우팅 및 컨트롤러 바인딩

먼저 컨트롤러 파일 appHttpControllersIndexController.php를 만듭니다. , 코드는 다음과 같습니다.

<?php
namespace App\Http\Controllers;
class IndexController extends Controller
{
    public function news ($id)
    {
        echo "news:$id";
    }
}

이제 라우팅 파일 web.php를 수정합니다

Route::get(&#39;news/{id}&#39;, &#39;IndexController@news&#39;)->where(&#39;id&#39;, &#39;\d+&#39;);

이제 /news/1을 통해 IndexController 컨트롤러의 뉴스 메소드에 액세스할 수 있습니다.

app/Http/Controllers/Home/IndexController.php가 생성되면 이 컨트롤러의 라우팅을 어떻게 설정하나요? 방법은 다음과 같습니다.

Route::get(&#39;home&#39;, &#39;Home\IndexController@index&#39;);

위 내용은 Laravel 강의 2: 경로 정의 및 컨트롤러 바인딩의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.