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