【问题标题】:How are routes created in Laravel 9 using inertia?如何使用惯性在 Laravel 9 中创建路由?
【发布时间】:2022-12-16 23:30:26
【问题描述】:

我最近开始将新版本的 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');

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

【问题讨论】:

    标签: php laravel vue.js inertiajs


    【解决方案1】:

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

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

    php artisan route:list
    

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

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

    【讨论】:

      【解决方案2】:
      Route::get('create', [UserController::class, 'create']);
      

      【讨论】:

        【解决方案3】:

        请尝试如下:我使用了 Laravel Breeze

        惯性路由呼叫 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.
            );
        }
        

        【讨论】:

          猜你喜欢
          • 2022-12-21
          • 2014-02-19
          • 1970-01-01
          • 1970-01-01
          • 2015-09-02
          • 2021-11-11
          • 2020-11-10
          • 2020-07-17
          • 2015-12-02
          相关资源
          最近更新 更多