ホームページ  >  記事  >  PHPフレームワーク  >  Laravel 講義 2: ルートの定義とコントローラーへのバインディング

Laravel 講義 2: ルートの定義とコントローラーへのバインディング

齐天大圣
齐天大圣オリジナル
2020-12-08 22:31:081864ブラウズ

ネットワーク内のルーターがパスの選択とパケットの転送に使用されることはわかっていますが、フレームワーク内のルートは何に使用されるのでしょうか?ここでのルートとはhttpリクエストを受信するためのパスであり、パスを設定することで特定のプログラムの機能にアクセスすることができます。ルーティングはフレームワークの中核機能の 1 つであり、基本的に主流のフレームワークはすべてルーティング機能を備えています。さらに、ルーティングを設定して、長く深いパスを短く浅いパスに変換することもできます (これは SEO にとって非常に有益な機能です)。

デフォルトのルーティング ファイル

すべての laravel ルートは、ルート ディレクトリの Routes ディレクトリにあるルーティング ファイルで定義されます。フレームワークはこのディレクトリを自動的にロードします。デフォルトでは.ファイルの下にあります。 routes/web.php ファイルを見てみましょう

use Illuminate\Support\Facades\Route;

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

基本ルーティング

次に、Web 上に新しいルーティングを作成します。 php ファイル 単純なルーティングのコードは次のとおりです。

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

さて、ブラウザに localhost:8000/index と入力すると、「laravel を勉強する」という文が表示されます。

一般的なルーティング メソッド

上記の get メソッドに加えて、一般的に使用されるルーティング メソッドは次のとおりです。post、put、delete、any、マッチ 。

ここでの 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+');

複数のパラメータを渡すこともでき、クロージャ内のパラメータは次のように自動的に 1 対 1 に対応します:

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

ルートとコントローラbinding

まず、コントローラー ファイル app\Http\Controllers\IndexController.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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。