Rumah >rangka kerja php >Laravel >Mari kita bincangkan tentang penghalaan dan pengawal Laravel8

Mari kita bincangkan tentang penghalaan dan pengawal Laravel8

WBOY
WBOYke hadapan
2022-05-24 11:55:082720semak imbas

Artikel ini membawa anda pengetahuan yang berkaitan tentang laravel, yang terutamanya memperkenalkan isu yang berkaitan dengan penghalaan dan pengawal, termasuk kumpulan penghalaan, melompat ke pengawal, penghalaan pasca dan Penghalaan Ajax serta kandungan lain yang berkaitan, mari kita ambil lihat di bawah, semoga bermanfaat untuk semua.

Mari kita bincangkan tentang penghalaan dan pengawal Laravel8

[Cadangan berkaitan: tutorial video laravel]

laluan akses laravel ialah:
1) Penghalaan—Pengawal— Halaman /Output
2) Penghalaan—Fungsi Tanpa Nama—Halaman/Output

1 Lihat semua laluan semasa

Masukkan direktori akar projek semasa dan jalankan cmd
atau gunakan IDE. untuk mengautomasikan Terminal dengan kekunci pintasan ALT F12

 php artisan route:list

Mari kita bincangkan tentang penghalaan dan pengawal Laravel8

2. Pelbagai laluan

dalam fail route/web.php

Nama domain saya ialah www.la.com, mengikut situasi sebenar anda

1. Lompat ke paparan

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

Lihat lokasi direktori: sumber/pandangan, Kandungan HTML juga disimpan. view() ialah fungsi pembantu ('selamat datang') bermaksud melompat ke paparan selamat datang.blade.php, iaitu halaman selamat datang yang kita lihat apabila kita memulakan Laravel buat kali pertama.

Tulis: www.la.com/ dalam bar alamat penyemak imbas, hasil yang dijalankan ialah:
Mari kita bincangkan tentang penghalaan dan pengawal Laravel8

2

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

3. Laluan dengan parameter Mari kita bincangkan tentang penghalaan dan pengawal Laravel8

ialah fungsi tambahan laravel, digunakan untuk mencetak data

dump()1) Parameter Tunggal

Penyemak imbas menjalankan http://www.la.com/show/1

Keputusan: "1"
Route::get('show/{a}', function ($a) {
    dump($a);});
Nota: Ia ialah rentetan


2) Berbilang parameter

Penyemak imbas dijalankan: http://www.la.com/show/1/hello

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

4

Sekatan di atas bermakna parameter umur hanya boleh menerima nombor dan parameter nama hanya boleh menerima huruf besar dan huruf kecil.

Route::get('user/{name}/{age}', function ($name,$age) {
 echo $name.' '.$age; //直接输出 
 })->where('age','\d+')->where('name','[a-zA-Z]+');
Jika syarat tidak dipenuhi, keputusannya ialah: 404 NOT FUND

Jalankan dalam pelayar: http://www.la.com/user/zhangsan/18

Keputusan : zhangshan 18

5 Menghalakan kumpulan

1) Cara pertama untuk menulis Route::group(array('prefix'=>'user'),function(){}) ;

Pelayar berjalan:

Route::group(array('prefix'=>'user'),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
  • Keputusan:

indeks

    tambah
  • 2) Cara kedua menulis Laluan: :prefix('user ')->group(function(){});

6 Lompat ke pengawal

Route::prefix('user')->group(function(){
    Route::get('/index', function () {
        echo 'index';
    });
    Route::get('/add', function () {
        echo 'add';
    });});
1) Cipta pengawal dan tulis kaedah

dalam Jalankan direktori akar projek

php artisan make:controller TestController

Mari kita bincangkan tentang penghalaan dan pengawal Laravel82) Tulis penghalaan

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

di permulaan config/web.php

Kemudian tulis laluan

use App\Http\Controllers\TestController;

Jalankan penyemak imbas: http://www.la.com/hello

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



7.POST Routing Mari kita bincangkan tentang penghalaan dan pengawal Laravel8

Untuk mengelakkan serangan CSRF dalam laravel, kita mesti menulis ayat @csrf dalam setiap borang siaran Untuk butiran, anda boleh klik untuk membaca saya yang lain artikel

Kami mula-mula menambah
paparan
  1. views/user文件夹 kod di dalam add.blade.php:

Tambah laluan
nbsp;html>
    <title>测试POST提交</title>
    
        @csrf         name:              
bermaksud paparan tambah di bawah folder pengguna dalam direktori sumber/pandangan. (sumber/pandangan ialah laluan lalai)
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路由验证成功";
    });});

Dapatkan semua parameter permintaanview('user.add')
Cetak data$request->all()
dump()
Mari kita bincangkan tentang penghalaan dan pengawal Laravel8Uji

Mula-mula masukkan http terus : //www.la.com/user/insert pasti tidak akan berfungsi dan ralat akan dilaporkan (Kaedah GET tidak disokong untuk laluan ini. Kaedah yang disokong: POST.).
    Posmen memasuki http://www.la.com/user/insert dan penghantaran pos gagal dan mengembalikan 419 | Halaman Tamat Tempoh



  1. Mari kita bincangkan tentang penghalaan dan pengawal Laravel8Jadi kami mula-mula masukkan http:/ / dalam penyemak imbas /www.la.com/user/add, isikan nama yang anda mahukan dan serahkan


8 Mari kita bincangkan tentang penghalaan dan pengawal Laravel8

Pindahkan token melalui js, di sini name="_token" anda boleh memilih mana-mana nama

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
结果:Mari kita bincangkan tentang penghalaan dan pengawal Laravel8
在浏览器中运行www.la.com/profile
结果:404 NOT FOUND

在浏览器中运行www.la.com/redirect
结果:Mari kita bincangkan tentang penghalaan dan pengawal Laravel8

10.命名空间路由

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

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

使用这种方法创建的控制器,自动加载名称空间,如下图所示
观察与之前创建控制器php artisan make:controller TestController的区别
Mari kita bincangkan tentang penghalaan dan pengawal Laravel8
方法二:复制粘贴其他类
在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视频教程

Atas ialah kandungan terperinci Mari kita bincangkan tentang penghalaan dan pengawal Laravel8. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:csdn.net. Jika ada pelanggaran, sila hubungi admin@php.cn Padam