【问题标题】:Error: Class Does not exist in Laravel错误:类在 Laravel 中不存在
【发布时间】:2016-07-22 10:48:35
【问题描述】:

我遇到以下错误

InvalidArgumentExceptionFormBuilder.php 第 39 行: 名称为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'
]);

而且我不知道问题出在哪里,因为该文件存在于项目文件夹中。

【问题讨论】:

    标签: php laravel laravel-4 laravel-5 laravel-5.1


    【解决方案1】:

    错误说明

    这里:

    $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
    

    它应该可以工作

    【讨论】:

      猜你喜欢
      • 2019-05-26
      • 1970-01-01
      • 1970-01-01
      • 2016-01-09
      • 1970-01-01
      • 2015-04-21
      • 2022-01-13
      • 2013-12-10
      相关资源
      最近更新 更多