Heim >PHP-Framework >Laravel >Lassen Sie uns über das Routing und den Controller von Laravel8 sprechen
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 Routen
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:listStandort 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: ALT+F12
Route::get('/', function () { return view('welcome');});
在routes/web.php文件
我域名是www.la.com,按自己实际情况来
Route::get('ok', function () { echo "hello world";});
视图目录位置:resources/views,存放的也是 HTML 内容。view()
是一个助手函数,view(‘welcome’) 表示跳到welcome.blade.php视图,也就是我们第一次启动 Laravel 看到的那个欢迎页面。
在浏览器地址栏写:www.la.com/ ,运行结果为:
Route::get('show/{a}', function ($a) { dump($a);});
dump()
是laravel的辅助函数,用来打印数据的
Route::get('show/{a}/{b}', function ($a,$b) { echo $a.','.$b;});
浏览器运行http://www.la.com/show/1
结果:“1”
注意:是字符串
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
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
Route::prefix('user')->group(function(){ Route::get('/index', function () { echo 'index'; }); Route::get('/add', function () { echo 'add'; });});
浏览器运行:
结果:
php artisan make:controller TestController
在项目根目录运行
<?phpnamespace App\Http\Controllers;use Illuminate\Http\Request;class TestController extends Controller{ public function hello(){ echo "TestController的hello方法"; }}
use App\Http\Controllers\TestController;
在config/web.php最开始添加
Route::get('/hello',[TestController::class,'hello']);//跳到控制器的方法
然后写路由
nbsp;html> <title>测试POST提交</title>
浏览器运行:http://www.la.com/hello
结果:
laravel中为了防止csrf攻击,我们在每一个post表单里面都要写上一句 @csrf ,详细可以点击看我另一篇文章
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路由验证成功"; });});
nbsp;html> <meta> <title>CSRF</title> <meta><script></script><script> $.ajax({ url: "http://www.la.com/index",//本页面 type: "POST", data: { name:"名字" }, headers: { 'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content') }, 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。
dump()
ist die Hilfsfunktion von Laravel, die zum Drucken von Daten verwendet wirdphp artisan make:controller Admin\IndexController
Hinweis: Es handelt sich um eine Zeichenfolge
public function index(){ return "Admin文件夹下的IndexController中的index方法";}Browser läuft: http://www.la.com/show/1/hello Ergebnis: 1,hello4. 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 GEFUNDENIm 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:🎜
add.blade.php
-Ansicht hinzufügen 🎜🎜🎜Code darin: 🎜rrreeeview ('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 abheaders: {
‘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: { 'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content') }, success: function (data) { console.log("200"); } });</script>
别名路由就是给某一个路由起一个别名,直接使用使用原名可以访问路由,但直接使用别名不能访问这个路由,同时在其他页面调用别名可以访问这个路由。
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
结果:
在浏览器中运行www.la.com/profile
结果:404 NOT FOUND
在浏览器中运行www.la.com/redirect
结果:
之前写的控制器 Controller 都直接写在 Http\Controllers 文件夹之中,但实际情况是控制器也会分类,比如与管理员相关的操作会在 Controllers 中,再建一个文件夹 Admin,然 后把所有关于管理员的控制器类都放在这个文件夹中。如果这样的话,就要添加名称空间。
php artisan make:controller Admin\IndexController
使用这种方法创建的控制器,自动加载名称空间,如下图所示
观察与之前创建控制器php artisan make:controller TestController
的区别
方法二:复制粘贴其他类
在Controllers文件夹下创建Admin文件夹,复制之前创建的控制器TestController,照着上图修改。
命名空间 namespace App\Http\Controllers\Admin;
添加类引用 use App\Http\Controllers\Controller;
public function index(){ return "Admin文件夹下的IndexController中的index方法";}
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!