Heim >PHP-Framework >Laravel >Lassen Sie uns über das Routing und den Controller von Laravel8 sprechen

Lassen Sie uns über das Routing und den Controller von Laravel8 sprechen

WBOY
WBOYnach vorne
2022-05-24 11:55:082746Durchsuche

Dieser Artikel bringt Ihnen relevantes Wissen über laravel, in dem hauptsächlich verwandte Themen zu Routing und Controllern vorgestellt werden, einschließlich Routing-Gruppen, Springen zu Controllern, Post-Routing, Ajax-Routing usw. Schauen wir es uns gemeinsam an, ich hoffe, das wird so sein allen hilfreich sein. 🔜 Alle Routen: Geben Sie das Stammverzeichnis des aktuellen Projekts ein und führen Sie cmd aus. php .cn/upload/article/000/000/067/3f2c04e8980adf257b04d3ca58e4c99d-0.png" alt="Bildbeschreibung hier einfügen"/>

Zweitens verschiedene RoutenLassen Sie uns über das Routing und den Controller von Laravel8 sprechen

In der Datei „routes/web.php“

ich Der Domainname lautet www.la.com, entsprechend Ihrer tatsächlichen Situation


1. Springen Sie zur Ansicht

 php artisan route:list
Standort des Verzeichnisses: resources/views, in dem auch HTML-Inhalte gespeichert sind. view() ist eine Hilfsfunktion. view(‘welcome’) bedeutet, zur Welcome.blade.php-Ansicht zu springen, der Willkommensseite, die wir sehen, wenn wir Laravel zum ersten Mal starten.

Schreiben Sie: www.la.com/ in die Adressleiste des Browsers. Das laufende Ergebnis lautet:

Bildbeschreibung hier einfügen
ALT+F12

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

Lassen Sie uns über das Routing und den Controller von Laravel8 sprechen

二、各种路由

在routes/web.php文件

我域名是www.la.com,按自己实际情况来

1.跳到视图

Route::get('ok', function () {
    echo "hello world";});

视图目录位置:resources/views,存放的也是 HTML 内容。view()是一个助手函数,view(‘welcome’) 表示跳到welcome.blade.php视图,也就是我们第一次启动 Laravel 看到的那个欢迎页面。

在浏览器地址栏写:www.la.com/ ,运行结果为:
Lassen Sie uns über das Routing und den Controller von Laravel8 sprechen

2.直接输出

Route::get('show/{a}', function ($a) {
    dump($a);});

Lassen Sie uns über das Routing und den Controller von Laravel8 sprechen

3.带参数的的路由

dump()是laravel的辅助函数,用来打印数据的

1)单个参数

Route::get('show/{a}/{b}', function ($a,$b) {
   echo $a.','.$b;});

浏览器运行http://www.la.com/show/1
结果:“1”
注意:是字符串

2)多个参数

Route::get('user/{name}/{age}', function ($name,$age) {
 echo $name.' '.$age; //直接输出 
 })->where('age','\d+')->where('name','[a-zA-Z]+');

浏览器运行:http://www.la.com/show/1/hello
结果:1,hello

4.路由参数添加限定 正则表达式

Route::group(array('prefix'=>'user'),function(){
    Route::get('/index', function () {
        echo 'index';
    });
    Route::get('/add', function () {
        echo 'add';
    });});

上述限定的意思是 age 参数只能接受数字,name 参数只能接受大小写字母。

如果不满足条件,结果:404 NOT FOUND

浏览器中运行:http://www.la.com/user/zhangsan/18
结果:zhangshan 18

5.路由组

1)第一种写法Route::group(array(‘prefix’=>‘user’),function(){});

Route::prefix('user')->group(function(){
    Route::get('/index', function () {
        echo 'index';
    });
    Route::get('/add', function () {
        echo 'add';
    });});

浏览器运行:

  • http://www.la.com/user/index
  • http://www.la.com/user/add

结果:

  • index
  • add

2)第二种写法 Route::prefix(‘user’)->group(function(){});

php artisan make:controller TestController

6.跳到控制器

1)创建控制器,编写方法

在项目根目录运行

<?phpnamespace  App\Http\Controllers;use Illuminate\Http\Request;class TestController extends Controller{
    public function hello(){
        echo "TestController的hello方法";
    }}

Lassen Sie uns über das Routing und den Controller von Laravel8 sprechen

use App\Http\Controllers\TestController;

2)写路由

在config/web.php最开始添加

Route::get('/hello',[TestController::class,'hello']);//跳到控制器的方法

然后写路由

nbsp;html>
    <title>测试POST提交</title>
    
        @csrf         name:              

浏览器运行:http://www.la.com/hello
结果:
Lassen Sie uns über das Routing und den Controller von Laravel8 sprechen

7.POST路由

laravel中为了防止csrf攻击,我们在每一个post表单里面都要写上一句 @csrf ,详细可以点击看我另一篇文章

  1. 我们先在views/user文件夹添加一个add.blade.php视图

里面代码:

use Illuminate\Http\Request;Route::prefix('user')->group(function(){
    Route::get('/add', function () {
       return view('user.add');
    });
    Route::post('/insert', function (Request $request) {
        dump($request->all());
        echo "post路由验证成功";
    });});
  1. 添加路由
nbsp;html>
    <meta>
    <title>CSRF</title>
    <meta><script></script><script>
    $.ajax({
        url: "http://www.la.com/index",//本页面
        type: "POST",
        data: {
            name:"名字"
        },
        headers: {
            &#39;X-CSRF-TOKEN&#39;: $(&#39;meta[name="_token"]&#39;).attr(&#39;content&#39;)
        },
        success: function (data) {
            console.log("200");
        }
    });</script>

view('user.add')的意思是在resources/views目录下的user文件夹下的add视图 。(resources/views是默认路径)
$request->all()获取所有请求参数
dump()2. Direkte Ausgabe

Route::get('user/profile',function(){ 
	return 'my url:'.route('profile');})->name('profile'); 	//创建一个路由 user/profile,这个路由的作用是返回路由 profile 的 RUL 地址,并给这个路由起一个别名 profile Route::get('redirect',function(){ 
	return redirect()->route('profile'); }); 	//创建一个名为 redirect 的路由,这个路由的作用是跳转到路由 profile。
Lassen Sie uns über das Routing und den Controller von Laravel8 sprechenBildbeschreibung hier einfügen
    3. Route mit Parametern


  1. dump() ist die Hilfsfunktion von Laravel, die zum Drucken von Daten verwendet wird
    Lassen Sie uns über das Routing und den Controller von Laravel8 sprechen1) Single Parameter
    php artisan make:controller Admin\IndexController
  2. Der Browser führt http://www.la.com/show/1 aus
Ergebnis: „1“

Hinweis: Es handelt sich um eine Zeichenfolge

2) Mehrere Parameter
public function index(){
       return "Admin文件夹下的IndexController中的index方法";}
Lassen Sie uns über das Routing und den Controller von Laravel8 sprechen Browser läuft: http://www.la.com/show/1/hello Ergebnis: 1,hello

4. Fügen Sie einen qualifizierenden regulären Ausdruck zu den Routing-Parametern hinzu

use App\Http\Controllers\Admin\IndexController;Route::group(['namespace'=>'Admin'],function(){
    Route::get('admin',[IndexController::class,'index']);//管理员的主页
    Route::get('admin/user',[IndexController::class,'index']);//管理员用户相关
    Route::get('admin/goods',[IndexController::class,'index']);//商品相关});
Die obige Einschränkung bedeutet, dass der Parameter nur akzeptieren kann Zahlen und der Namensparameter kann nur Groß- und Kleinbuchstaben akzeptieren.
Wenn die Bedingungen nicht erfüllt sind, Ergebnis: 404 NICHT GEFUNDEN

Im Browser ausführen: http://www.la.com/user/zhangsan/18🎜 Ergebnis: zhangshan 18🎜🎜5 1 ) Die erste Art zu schreiben Route::group(array('prefix'=>'user'),function(){});rrreee🎜Browser läuft:🎜
    🎜http:// www .la.com/user/index🎜🎜http://www.la.com/user/add🎜
🎜Ergebnis: 🎜
    🎜index🎜🎜add🎜

2 ) Die zweite Art zu schreiben: Route::prefix('user')->group(function(){});

rrreee🎜6. Zum Controller springen🎜

1) Erstellen Sie den Controller und schreiben Sie die Methode🎜Im Projektstammverzeichnis ausführen🎜rrreee🎜 Fügen Sie hier ein Bild ein Beschreibung „/>🎜rrreee<h3>2) Route schreiben</h3>🎜Fügen Sie 🎜rrreee🎜 am Anfang von config/web.php hinzu und schreiben Sie dann die Route🎜rrreee🎜Führen Sie den Browser aus: http:// www.la.com/ hallo🎜 Ergebnis: 🎜<img src=Ansichten/BenutzerordnerEine add.blade.php-Ansicht hinzufügen 🎜🎜🎜Code darin: 🎜rrreee
    🎜Route hinzufügen🎜🎜 rrreee🎜view ('user.add') bedeutet das Hinzufügen einer Ansicht unter dem Benutzerordner im Verzeichnis resources/views. (Ressourcen/Ansichten ist der Standardpfad) 🎜$request->all() Alle Anforderungsparameter abrufen 🎜dump() Daten drucken 🎜🎜🎜🎜🎜Testen🎜 Zuerst , Die direkte Eingabe von http://www.la.com/user/insert funktioniert definitiv nicht und es wird ein Fehler gemeldet (Die GET-Methode wird für diese Route nicht unterstützt. Unterstützte Methoden: POST.). 🎜 Postbote gibt http://www.la.com/user/insert ein und gibt 419 | Seite abgelaufen🎜🎜🎜🎜🎜Also geben wir zuerst http://www.la.com/user/add ein Browser, Name Füllen Sie einfach einen beliebigen Punkt aus und senden Sie ihn ab

    headers: {
    ‘X-CSRF-TOKEN’: $(‘meta[name="_token"]’).attr(‘content’)
    },

    nbsp;html>
        <meta>
        <title>CSRF</title>
        <meta><script></script><script>
        $.ajax({
            url: "http://www.la.com/index",//本页面
            type: "POST",
            data: {
                name:"名字"
            },
            headers: {
                &#39;X-CSRF-TOKEN&#39;: $(&#39;meta[name="_token"]&#39;).attr(&#39;content&#39;)
            },
            success: function (data) {
                console.log("200");
            }
        });</script>

    9.带别名的路由

    别名路由就是给某一个路由起一个别名,直接使用使用原名可以访问路由,但直接使用别名不能访问这个路由,同时在其他页面调用别名可以访问这个路由。

    Route::get('user/profile',function(){ 
    	return 'my url:'.route('profile');})->name('profile'); 	//创建一个路由 user/profile,这个路由的作用是返回路由 profile 的 RUL 地址,并给这个路由起一个别名 profile Route::get('redirect',function(){ 
    	return redirect()->route('profile'); }); 	//创建一个名为 redirect 的路由,这个路由的作用是跳转到路由 profile。

    route() 生成完整的URL
    redirect()->route(‘profile’); //重定向命名路由

    在浏览器中运行 www.la.com/user/profile
    结果:Lassen Sie uns über das Routing und den Controller von Laravel8 sprechen
    在浏览器中运行www.la.com/profile
    结果:404 NOT FOUND

    在浏览器中运行www.la.com/redirect
    结果:Lassen Sie uns über das Routing und den Controller von Laravel8 sprechen

    10.命名空间路由

    之前写的控制器 Controller 都直接写在 Http\Controllers 文件夹之中,但实际情况是控制器也会分类,比如与管理员相关的操作会在 Controllers 中,再建一个文件夹 Admin,然 后把所有关于管理员的控制器类都放在这个文件夹中。如果这样的话,就要添加名称空间。

    1. 创建控制器
      方法一:使用phpartisan
    php artisan make:controller Admin\IndexController

    使用这种方法创建的控制器,自动加载名称空间,如下图所示
    观察与之前创建控制器php artisan make:controller TestController的区别
    Lassen Sie uns über das Routing und den Controller von Laravel8 sprechen
    方法二:复制粘贴其他类
    在Controllers文件夹下创建Admin文件夹,复制之前创建的控制器TestController,照着上图修改。

    命名空间 namespace App\Http\Controllers\Admin;
    添加类引用 use App\Http\Controllers\Controller;

    1. 控制器添加 index方法
    public function index(){
           return "Admin文件夹下的IndexController中的index方法";}
    1. 写路由
      web.php文件
    use App\Http\Controllers\Admin\IndexController;Route::group(['namespace'=>'Admin'],function(){
        Route::get('admin',[IndexController::class,'index']);//管理员的主页
        Route::get('admin/user',[IndexController::class,'index']);//管理员用户相关
        Route::get('admin/goods',[IndexController::class,'index']);//商品相关});

    浏览器输地址
    http://www.la.com/admin
    http://www.la.com/admin/user
    http://www.la.com/admin/goods
    结果都是一样

    【相关推荐:laravel视频教程

Das obige ist der detaillierte Inhalt vonLassen Sie uns über das Routing und den Controller von Laravel8 sprechen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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