繁体   English   中英

如何使用惯性在 Laravel 9 中创建路由?

[英]How are routes created in Laravel 9 using inertia?

我最近开始将新版本的 Laravel 9 与 Inertia 和 Vue js 3 一起使用,但是当我想从控制器调用函数时,我遇到了路由问题。 正确的方法是什么? 我给你举个例子

用户控制器

    <?php

   namespace App\Http\Controllers;

   use App\Models\User;
   use Illuminate\Http\Request;
   use Inertia\Inertia;

   class UserController extends Controller
   {

     public function index()
     {
       $users = User::all();
       return Inertia::render('User',compact('users'));
     }

     public function create()
     {    
    
       return Inertia::render('Create');
     }

   }

路线/web.php

<?php

use Illuminate\Foundation\Application;
use Illuminate\Support\Facades\Route;
use Inertia\Inertia;
use App\Http\Controllers\UserController;


Route::get('/', function () {
    return Inertia::render('Welcome', [
        'canLogin' => Route::has('login'),
        'canRegister' => Route::has('register'),
        'laravelVersion' => Application::VERSION,
        'phpVersion' => PHP_VERSION,
    ]);
});

Route::middleware([
    'auth:sanctum',
    config('jetstream.auth_session'),
    'verified',
])->group(function () {
    Route::get('/dashboard', function () {
        return Inertia::render('Dashboard');
    })->name('dashboard');
});

//Con el Middleware pide que el usuario este autentificado para ingresar a la ruta
//en render es el archivo vue a que llamamos, en este caso esta en resourrces, en js, pages

Route::middleware(['auth:sanctum',config('jetstream.auth_session'),'verified'])->resource('/user',UserController::class);

//this not work
Route::middleware(['auth:sanctum',config('jetstream.auth_session'),'verified'])->resource('/create',[UserController::class,'create'])->name('create');

创建路线不起作用,正确的方法是什么?

->resource将为控制器创建 RESTFul 路由;

运行以下命令以获取所有可用路由:

php artisan route:list

因此,您可能需要像->get这样的单个操作,而不是资源

Route::middleware(['auth:sanctum', config('jetstream.auth_session'), 'verified'])
->get('/create', [UserController::class, 'create'])
->name('create');

Route::get('create', [UserController::class, 'create']);

请尝试如下:我用过 Laravel Breez

惯性路由呼叫 LINK

<div class="mb-2">
    <Link :href="route('blogs.create')">
        <BreezeButton>Add Blog</BreezeButton>
    </Link>
</div>

web.php: 路线

Route::get('/create', [BlogController::class, 'create'])->middleware(['auth', 'verified'])->name('blogs.create');

控制器中的函数调用

public function create()
{      
    return Inertia::render(
        'Blogs/Create'      // Your Create.vue will be in Blogs folder.
    );
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM