[英]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.