簡體   English   中英

錯誤:Laravel中不存在類

[英]Error: Class Does not exist in Laravel

我遇到以下錯誤

FormBuilder.php第39行中的InvalidArgumentException :名稱為App\\Http\\Controllers\\App\\Forms\\SongForm不存在。

在Laravel上

SongsController.php類

<?php

namespace App\Http\Controllers;

use Illuminate\Routing\Controller as BaseController;
use Kris\LaravelFormBuilder\FormBuilder;

class SongsController extends BaseController {

    public function create(FormBuilder $formBuilder)
    {
        $form = $formBuilder->create(App\Forms\SongForm::class, [
            'method' => 'POST',
            'url' => route('song.store')
        ]);

        return view('song.create', compact('form'));
    }

    public function store(FormBuilder $formBuilder)
    {
        $form = $formBuilder->create(App\Forms\SongForm::class);

        if (!$form->isValid()) {
            return redirect()->back()->withErrors($form->getErrors())->withInput();
        }

        // Do saving and other things...
    }
}

SongForm.php

<?php

namespace App\Forms;

use Kris\LaravelFormBuilder\Form;

class SongForm extends Form
{
    public function buildForm()
    {
        $this
            ->add('name', 'text', [
                'rules' => 'required|min:5'
            ])
            ->add('lyrics', 'textarea', [
                'rules' => 'max:5000'
            ])
            ->add('publish', 'checkbox');
    }
}

routes.php

Route::get('songs/create', [
    'uses' => 'SongsController@create',
    'as' => 'song.create'
]);

Route::post('songs', [
    'uses' => 'SongsController@store',
    'as' => 'song.store'
]);

而且我不知道問題出在哪里,因為文件存在於項目文件夾中。

錯誤說明

這里:

$form = $formBuilder->create(App\Forms\SongForm::class, [
        'method' => 'POST',
        'url' => route('song.store')
   ]);

您正在使用相對於當前名稱空間的名稱空間指定類名稱:

App\Forms\SongForm::class

完整的類名將相對於當前名稱空間進行構建,即:

namespace App\Http\Controllers;

因此,您要作為參數傳遞的類變為:

App\Http\Controllers\App\Forms\SongForm::class

該類不存在,所以您會收到錯誤消息

怎么解決

要解決,可以指定絕對名稱空間。 更改此:

App\Forms\SongForm::class

對此:

\App\Forms\SongForm::class

它應該工作

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM