Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

mohammadkhallaf's avatar

when run php artisan optimize i have this erroe


Unable to prepare route [confirm-password] for serialization. Another route has already been assigned name [password.confirm].

  at C:\xampp\htdocs\optical\vendor\laravel\framework\src\Illuminate\Routing\AbstractRouteCollection.php:219
    215▕             $route->name($this->generateRouteName());
    216▕
    217▕             $this->add($route);
    218▕         } elseif (! is_null($symfonyRoutes->get($name))) {
  ➜ 219▕             throw new LogicException("Unable to prepare route [{$route->uri}] for serialization. Another route has already been assigned name [{$name}].");
    220▕         }
    221▕
    222▕         $symfonyRoutes->add($route->getName(), $route->toSymfonyRoute());
    223▕

  1   C:\xampp\htdocs\optical\vendor\laravel\framework\src\Illuminate\Routing\AbstractRouteCollection.php:180
      Illuminate\Routing\AbstractRouteCollection::addToSymfonyRoutesCollection(Object(Symfony\Component\Routing\RouteCollection), Object(Illuminate\Routing\Route))

  2   C:\xampp\htdocs\optical\vendor\laravel\framework\src\Illuminate\Routing\RouteCollection.php:246
      Illuminate\Routing\AbstractRouteCollection::toSymfonyRouteCollection()


0 likes
9 replies
Sinnbeck's avatar

Sounds like you have 2 routes with the same name

mohammadkhallaf's avatar

@Sinnbeck

<?php
use App\Http\Controllers\CustomerController;
use Illuminate\Support\Facades\Route;
use App\Http\Middleware\isAdminMiddleware;
use Illuminate\Support\Facades\Auth;
use App\Http\Controllers\AppointmentController;
use App\Http\Controllers\TestController;
use App\Models\PersonalTest;
use App\Http\Controllers\PersonalTestController;
use App\Http\Controllers\FinanceController;
use App\Http\Controllers\TransactionController;
use App\Http\Controllers\emp\EmpFinanceController;
use App\Http\Controllers\emp\EmpTransactionController;
use App\Http\Controllers\HomeController;
use App\Http\Controllers\Auth\RegisteredUserController;
use App\Http\Controllers\EmployeeController;

Route::get('/', function () {
    return view('auth.login');
});

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

})->middleware(['auth', 'verified'])->name('dashboard');
Route::get('/dashboard', [HomeController::class, 'index'])->name('dashboard')->middleware(['auth', 'verified']);
Route::post('/logout', '\App\Http\Controllers\Auth\LoginController@logout');

require __DIR__.'/auth.php';
 Route::get('/empfinance', [EmpFinanceController::class, 'index'])->name('emp.finance');
    Route::get('/emptransaction', [EmpTransactionController::class, 'index'])->name('emp.transaction');
Route::group(['isAdminMiddleware' => ['is_admin']],function (){
    Route::get('/admin', function () {


        return view('admin');


    })->name('admin');

////// customers routes
Route::get('/home', [HomeController::class, 'index'])->name('home');

Route::get('/employee', [EmployeeController::class, 'index'])->name('admin.employee');

Route::get('/customer', [CustomerController::class, 'index'])->name('admin.customer');
Route::get('/customer/create', [CustomerController::class, 'create'])->name('admin.customer.create');
Route::post('/customer/store', [CustomerController::class, 'store'])->name('admin.customer.store');
Route::get('/customer/edit/{id}', [CustomerController::class, 'edit'])->name('admin.customer.edit');
Route::put('/customer/update/{id}', [CustomerController::class, 'update'])->name('admin.customer.update');
Route::get('/customer/delete/{id}', [CustomerController::class, 'destroy'])->name('admin.customer.delete');
//////
//// appointment routes
Route::get('/appointment', [AppointmentController::class, 'index'])->name('admin.appointment');
Route::get('/appointment/create', [AppointmentController::class, 'create'])->name('admin.appointment.create');
Route::post('/appointment/store', [AppointmentController::class, 'store'])->name('admin.appointment.store');
Route::get('/appointment/edit/{id}', [AppointmentController::class, 'edit'])->name('admin.appointment.edit');
Route::put('/appointment/update/{id}', [AppointmentController::class, 'update'])->name('admin.appointment.update');
Route::get('/appointment/delete/{id}', [AppointmentController::class, 'destroy'])->name('admin.appointment.delete');
//// test routes
Route::get('/test', [TestController::class, 'index'])->name('admin.test');
Route::get('/test/create', [TestController::class, 'create'])->name('admin.test.create');
Route::post('/test/store', [TestController::class, 'store'])->name('admin.test.store');
Route::get('/test/edit/{id}', [TestController::class, 'edit'])->name('admin.test.edit');
Route::put('/test/update/{id}', [TestController::class, 'update'])->name('admin.test.update');
Route::get('/test/delete/{id}', [TestController::class, 'destroy'])->name('admin.test.delete');
////personal test routes
Route::get('/ptest', [PersonalTestController::class, 'index'])->name('admin.ptest');
Route::get('/ptest/create', [PersonalTestController::class, 'create'])->name('admin.ptest.create');
Route::post('/ptest/store', [PersonalTestController::class, 'store'])->name('admin.ptest.store');
Route::get('/ptest/edit/{id}', [PersonalTestController::class, 'edit'])->name('admin.ptest.edit');
Route::put('/ptest/update/{id}', [PersonalTestController::class, 'update'])->name('admin.ptest.update');
Route::get('/ptest/delete/{id}', [PersonalTestController::class, 'destroy'])->name('admin.ptest.delete');
// finance routes
Route::get('/finance', [FinanceController::class, 'index'])->name('admin.finance');
Route::get('/finance/create', [FinanceController::class, 'create'])->name('admin.finance.create')->middleware(['password.confirm']);
Route::post('/finance/store', [FinanceController::class, 'store'])->name('admin.finance.store');
Route::get('/finance/edit/{id}', [FinanceController::class, 'edit'])->name('admin.finance.edit')->middleware(['password.confirm']);;
Route::put('/finance/update/{id}', [FinanceController::class, 'update'])->name('admin.finance.update');
Route::get('/finance/delete/{id}', [FinanceController::class, 'destroy'])->name('admin.finance.delete');
// transaction routes
///
Route::get('/register', [RegisteredUserController::class, 'create'])->name('register')->middleware(['password.confirm']);
///
Route::get('/transaction', [TransactionController::class, 'index'])->name('admin.transaction');
Route::get('/transaction/create', [TransactionController::class, 'create'])->name('admin.transaction.create')->middleware(['password.confirm']);;
Route::post('/transaction/store', [TransactionController::class, 'store'])->name('admin.transaction.store');
Route::get('/transaction/edit/{transaction}', [TransactionController::class, 'edit'])->name('admin.transaction.edit')->middleware(['password.confirm']);;
Route::put('/transaction/update/{transaction}', [TransactionController::class, 'update'])->name('admin.transaction.update');
Route::get('/transaction/delete/{id}', [TransactionController::class, 'destroy'])->name('admin.transaction.delete');
});

/// emp controller

mohammadkhallaf's avatar

@Sinnbeck

<?php

use App\Http\Controllers\Auth\AuthenticatedSessionController;
use App\Http\Controllers\Auth\ConfirmablePasswordController;
use App\Http\Controllers\Auth\EmailVerificationNotificationController;
use App\Http\Controllers\Auth\EmailVerificationPromptController;
use App\Http\Controllers\Auth\NewPasswordController;
use App\Http\Controllers\Auth\PasswordResetLinkController;
use App\Http\Controllers\Auth\RegisteredUserController;
use App\Http\Controllers\Auth\VerifyEmailController;
use Illuminate\Support\Facades\Route;

Route::middleware('guest')->group(function () {
    Route::get('register', [RegisteredUserController::class, 'create'])
                ->name('register');

    Route::post('register', [RegisteredUserController::class, 'store']);

    Route::get('login', [AuthenticatedSessionController::class, 'create'])
                ->name('login');

    Route::post('login', [AuthenticatedSessionController::class, 'store']);

    Route::get('forgot-password', [PasswordResetLinkController::class, 'create'])
                ->name('password.request');

    Route::post('forgot-password', [PasswordResetLinkController::class, 'store'])
                ->name('password.email');

    Route::get('reset-password/{token}', [NewPasswordController::class, 'create'])
                ->name('password.reset');

    Route::post('reset-password', [NewPasswordController::class, 'store'])
                ->name('password.update');
});

Route::middleware('auth')->group(function () {
    Route::get('verify-email', [EmailVerificationPromptController::class, '__invoke'])
                ->name('verification.notice');

    Route::get('verify-email/{id}/{hash}', [VerifyEmailController::class, '__invoke'])
                ->middleware(['signed', 'throttle:6,1'])
                ->name('verification.verify');

    Route::post('email/verification-notification', [EmailVerificationNotificationController::class, 'store'])
                ->middleware('throttle:6,1')
                ->name('verification.send');

    Route::get('confirm-password', [ConfirmablePasswordController::class, 'show'])
                ->name('password.confirm');

    Route::post('confirm-password', [ConfirmablePasswordController::class, 'store']);

    Route::post('logout', [AuthenticatedSessionController::class, 'destroy'])
                ->name('logout');
});


Sinnbeck's avatar

@mohammadkhallaf So my guess is that you have some package (starter kit) that defines the route as well? Yours is this

    Route::get('confirm-password', [ConfirmablePasswordController::class, 'show'])
                ->name('confirm.password');
Sinnbeck's avatar

@mohammadkhallaf The error clearly states that you have two routes with the name "password.confirm"

Another route has already been assigned name [password.confirm].

->name('password.confirm');

Please or to participate in this conversation.