ホームページ > 記事 > PHPフレームワーク > Laravel8のルーティングとコントローラーについて話しましょう
この記事では、laravel に関する関連知識を提供します。主に、ルーティング グループ、コントローラーへのジャンプ、ポスト ルーティング、Ajax ルーティングやその他の関連コンテンツなど、ルーティングとコントローラーに関連する問題を紹介します。以下をご覧ください。皆さんのお役に立てれば幸いです。
[関連する推奨事項: laravel ビデオチュートリアル]
laravel アクセス パスは:
1) ルーティング - コントローラー - ページ/Output
2) ルーティング — 匿名関数 — ページ/出力
現在のプロジェクトのルート ディレクトリを入力し、cmd
を実行するか、IDE を使用します。ショートカット キー ALT F12
php artisan route:list
routes/web.php ファイル
##1. ビューにジャンプします私のドメイン名は www.la.com です。実際の状況に応じて選択してください
Route::get('/', function () { return view('welcome');});
view() はヘルパー関数です。view(‘welcome’) は、Laravel を初めて起動したときに表示されるウェルカム ページである welcome.blade.php ビューにジャンプすることを意味します。
Route::get('ok', function () { echo "hello world";});
3. パラメーターを使用したルート
1)単一パラメータdump()
は、laravel の補助関数であり、データを出力するために使用されます
Route::get('show/{a}', function ($a) { dump($a);});
を実行します。 結果: "1"
注: これは文字列です
Route::get('show/{a}/{b}', function ($a,$b) { echo $a.','.$b;});
結果: 1,hello
Route::get('user/{name}/{age}', function ($name,$age) { echo $name.' '.$age; //直接输出 })->where('age','\d+')->where('name','[a-zA-Z]+');
結果: zhangshan 18
Route::group(array('prefix'=>'user'),function(){ Route::get('/index', function () { echo 'index'; }); Route::get('/add', function () { echo 'add'; });});
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方法"; }}2) routingを記述しますconfig/web の先頭に
use App\Http\Controllers\TestController;を追加します。 php を作成し、 routing
Route::get('/hello',[TestController::class,'hello']);//跳到控制器的方法実行中のブラウザ: http://www.la.com/hello
結果:
in laravel csrf 攻撃を防ぐためには、すべての投稿フォームに @csrf という文を記述する必要があります。詳細については、クリックして私の他の記事を読むことができます
Add a
add.blade.phpView
nbsp;html> <title>测试POST提交</title>
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路由验证成功"; });});
view('user.add') は、resources/views ディレクトリのユーザー フォルダーにビューを追加することを意味します。 (resources/view がデフォルトのパスです)
$request->all()すべてのリクエストパラメータを取得
dump()データを印刷
#8.Ajax ルーティング
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: { 'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content') }, 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
结果:
在浏览器中运行www.la.com/profile
结果:404 NOT FOUND在浏览器中运行www.la.com/redirect
结果:10.命名空间路由
之前写的控制器 Controller 都直接写在 Http\Controllers 文件夹之中,但实际情况是控制器也会分类,比如与管理员相关的操作会在 Controllers 中,再建一个文件夹 Admin,然 后把所有关于管理员的控制器类都放在这个文件夹中。如果这样的话,就要添加名称空间。
- 创建控制器
方法一:使用phpartisanphp artisan make:controller Admin\IndexController使用这种方法创建的控制器,自动加载名称空间,如下图所示
观察与之前创建控制器php artisan make:controller TestController
的区别
方法二:复制粘贴其他类
在Controllers文件夹下创建Admin文件夹,复制之前创建的控制器TestController,照着上图修改。命名空间 namespace App\Http\Controllers\Admin;
添加类引用 use App\Http\Controllers\Controller;
- 控制器添加 index方法
public function index(){ return "Admin文件夹下的IndexController中的index方法";}
- 写路由
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视频教程】
以上がLaravel8のルーティングとコントローラーについて話しましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。