Heim  >  Artikel  >  PHP-Framework  >  Wie erhält Laravel gleichzeitig Routing-Parameter und Parameter in der Abfragezeichenfolge?

Wie erhält Laravel gleichzeitig Routing-Parameter und Parameter in der Abfragezeichenfolge?

藏色散人
藏色散人nach vorne
2021-03-04 11:22:202647Durchsuche

In der folgenden Tutorial-Kolumne von laravel erfahren Sie, wie Laravel gleichzeitig Routing-Parameter und Parameter in der Abfragezeichenfolge empfängt. Ich hoffe, dass es für Freunde in Not hilfreich ist!

Laravel erfasst Routenparameter Route::get('post/{id}', 'PostController@content');

Routing-Parameter in der Controller-Methode erfassen:

class PostController extends Controller
{

    public function content($id)
    {
        //
    }
}

Laravel erfasst gleichzeitig Routing-Parameter und Abfragezeichenfolgen Zeitparameter
Route::get('post/{id}', 'PostController@content');

控制器方法里捕捉路由参数:

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class PostController extends Controller
{

    public function content(Request $request, $id)
    {
        $from = $request->get('from')
    }
}

Laravel同时捕获路由参数和查询字符串参数

那在控制器里怎么既能捕捉到路由里定义的参数又能接收到url查询字符串里的参数呢,比如请求链接是这样的http://example.com.cn/post/1?from=index
引用官网文档的解释

Dependency Injection & Route Parameters

If your controller method is also expecting input from a route parameter you should list your route parameters after your other dependencies.

就是说如果想要在控制器方法注入依赖时仍然能使用路由里的参数,你需要把路由里的参数列举在方法依赖的后面,比如:

    public function detail(Request $request, $id, $source = '', $mediun = '', $campaign = '')
    {
        //
    }

Laravel捕获多个可选参数

此外laravel路由中我们还可以定义多个可选参数:

Route::get('/article/{id}/{source?}/{medium?}/{campaign?}', 'ArticleController@detail')

在控制器方法中可选参数需要定义成默认参数:

rrreee

这样定义完后路由里URL里可以传递0~3个可选参数,但是必须按照顺序:即想传第二个可选参数那么第一个可选参数必须有。
URL示例:
http://example.com.cn/article/1/wx/h5?param1=val1&param2=val2
在这个例子中"wx"会传递给变量$source, "h5"会传递给变量$medium Wie kann der Controller dann die in der Route definierten Parameter erfassen und die Parameter in der URL-Abfragezeichenfolge empfangen? Der Anforderungslink sieht beispielsweise so aus: http://example.com.cn/ post/ 1?from=index

Erläuterung zitiert aus dem offiziellen Website-Dokument
Abhängigkeitsinjektion und Routenparameter

Wenn Ihre Controller-Methode auch Eingaben von einem Routenparameter erwartet, sollten Sie Ihre Routenparameter nach Ihren anderen Abhängigkeiten auflisten.

Das heißt, wenn Sie beim Einfügen von Abhängigkeiten in die Controller-Methode weiterhin die Parameter in der Route verwenden möchten, müssen Sie die Parameter in der Route nach der Methodenabhängigkeit auflisten, wie zum Beispiel:
rrreee🎜Laravel erfasst mehrere optionale Parameter 🎜🎜Darüber hinaus können wir im Laravel-Routing auch mehrere optionale Parameter definieren: 🎜🎜Route::get('/article/{id}/{source?}/{medium?}/{campaign?}', ' ArticleController@ detail')🎜🎜In der Controller-Methode müssen optionale Parameter als Standardparameter definiert werden:🎜rrreee🎜Nach dieser Definition können 0 bis 3 optionale Parameter in der URL in der Route übergeben werden, aber sie muss in der richtigen Reihenfolge sein: Das heißt, wenn Sie den zweiten optionalen Parameter übergeben möchten, muss der erste optionale Parameter vorhanden sein. 🎜URL-Beispiel: 🎜http://example.com.cn/article/1/wx/h5?param1=val1&param2=val2🎜In diesem Beispiel "wx" Will an die Variable $source übergeben werden, "h5" wird an die Variable $medium übergeben 🎜🎜🎜🎜Empfohlen: 🎜Die letzten fünf Laravel-Videos-Tutorial🎜🎜🎜

Das obige ist der detaillierte Inhalt vonWie erhält Laravel gleichzeitig Routing-Parameter und Parameter in der Abfragezeichenfolge?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen