Maison  >  Questions et réponses  >  le corps du texte

La classe cible n'existe pas. Après avoir renommé le contrôleur et le modèle

Quand j'ai démarré le projet dans Laravel, j'avais un ReturnController. Mais en raison de la convention de dénomination, j'ai dû le renommer OrderController. J'ai renommé le contrôleur et le modèle et j'ai tout exécuté php artisan cache:clear、php artisan route:cache、php artisan config:cache ... 等,但是当我尝试在 中创建订单时>viewsordersadd.blade.php(表单的操作是action="{{route('orders.store') }}")

J'ai eu une erreur目标类 [OrderController] 不存在。

Voici le web.php contenu :

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

Route::resource('customers', 'CustomerController');

Route::resource('orders', 'OrderController');

Auth::routes();

Route::get('/home', [App\Http\Controllers\OrderController::class, 'showOrders'])->name('orders');

Route::get('/orders/create', [App\Http\Controllers\OrderController::class, 'create'])->name('orders.create');

Route::get('/orders', [App\Http\Controllers\OrderController::class, 'index']);

Qu'est-ce que j'ai raté ? Comment puis-je résoudre ce problème avant de réécrire l'intégralité de l'application à partir de zéro avec les noms de contrôleurs corrects ?

Un autre indice est que pour accéder à http://127.0.0.1:8000/home ,奇怪的是我必须添加行 use AppModelsOrderdans OrderController.php afin de fonctionner... voici donc OrderController.php pour vous aider...

<?php

namespace App\Http\Controllers;
use App\Models\Order;
use App\Models\Customer;
use App\Models\Product;

use Illuminate\Http\Request;

class OrderController extends Controller
{
    /**
     * Display a listing of the resource.
     */
    public function index()
    {
        //
    }

    /**
     * Show the form for creating a new resource.
     */
    public function create()
    {
        $customers = Customer::all();
        $products = Product::all();
        return view('orders.add', compact('customers', 'products'));
    }

    /**
     * Store a newly created resource in storage.
     */
    public function store(Request $request)
    {
        //
    }

    /**
     * Display the specified resource.
     */
    public function show(string $id)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     */
    public function edit(string $id)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     */
    public function update(Request $request, string $id)
    {
        //
    }

    /**
     * Remove the specified resource from storage.
     */
    public function destroy(string $id)
    {
        //
    }

    public function showOrders()
    {
        $orders = Order::with(['customer', 'products'])->get();

        return view('home', compact('orders'));
    }
}

P粉691958181P粉691958181251 Il y a quelques jours349

répondre à tous(1)je répondrai

  • P粉545956597

    P粉5459565972024-01-17 14:58:06

    Dans web.php au lieu de :

    Route::resource('customers', 'CustomerController');
    
    Route::resource('orders', 'OrderController');

    Utilisation :

    Route::resource('customers', App\Http\Controllers\CustomerController::class);
    Route::resource('orders', App\Http\Controllers\OrderController::class);

    répondre
    0
  • Annulerrépondre