Heim > PHP-Framework > Laravel > Hauptteil

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

藏色散人
Freigeben: 2021-03-05 09:03:06
nach vorne
2654 Leute haben es durchsucht

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)
    {
        //
    }
}
Nach dem Login kopieren

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')
    }
}
Nach dem Login kopieren

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 = '')
    {
        //
    }
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:segmentfault.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage