How to Add Form Class in Laravel 5

Many of you will question about the error like HandleExceptions->fatalExceptionFromError( array('type' => '1', 'message' => 'Class 'Form' not found' or
FatalErrorException in 193a332e9290704ad006bafdbd047286 line 2: Class 'Form' not found
. Hmm, you must be just upgrading your Laravel 4 to Laravel 5 weren’t you?

Laravel 5 doesn’t include the Form class like the previous version. It doesn’t matter why, but I think it loses great its great feature. Then, how to make it available like Laravel 4? Several steps are needed to get it work.

Updating composer.json

Add the illuminate/html namespace to your composer.json. So it may look like this.

{
	"name": "laravel/laravel",
	"description": "The Laravel Framework.",
	"keywords": ["framework", "laravel"],
	"license": "MIT",
	"type": "project",
	"require": {
		"laravel/framework": "5.0.*"
	},
	"require-dev": {
		"phpunit/phpunit": "~4.0",
		"phpspec/phpspec": "~2.1",
		"illuminate/html": "~5.0"
	},
	"autoload": {
		"classmap": [
			"database"
		],
		"psr-4": {
			"CMSWallpaper\": "app/"
		}
	},
	"autoload-dev": {
		"classmap": [
			"tests/TestCase.php"
		]
	},
	"scripts": {
		"post-install-cmd": [
			"php artisan clear-compiled",
			"php artisan optimize"
		],
		"post-update-cmd": [
			"php artisan clear-compiled",
			"php artisan optimize"
		],
		"post-create-project-cmd": [
			"php -r \"copy('.env.example', '.env');\"",
			"php artisan key:generate"
		]
	},
	"config": {
		"preferred-install": "dist"
	}
}

Now, you should get your composer updated by executing composer update in your command line tool. It will download the required dependency, illuminate/html (v5.0.0) in this case.

Loading composer repositories with package information
Updating dependencies (including require-dev)
  - Installing illuminate/html (v5.0.0)
    Downloading: 100%         

Writing lock file
Generating autoload files
Generating optimized class loader

Edit app.php

You have to add the Illuminate\Html\HtmlServiceProvider to Autoloaded Service Providers section, and 'Form => 'Illuminate\Html\FormFacade', and 'HTML' => 'Illuminate\Html\HtmlFacade' to your Class Aliases section in config/app.php as follow.

/*
|--------------------------------------------------------------------------
| Autoloaded Service Providers
|--------------------------------------------------------------------------
|
| The service providers listed here will be automatically loaded on the
| request to your application. Feel free to add your own services to
| this array to grant expanded functionality to your applications.
|
*/
'providers' => [
/*
* Laravel Framework Service Providers...
*/
'Illuminate\Foundation\Providers\ArtisanServiceProvider',
'Illuminate\Auth\AuthServiceProvider',
'Illuminate\Bus\BusServiceProvider',
'Illuminate\Cache\CacheServiceProvider',
'Illuminate\Foundation\Providers\ConsoleSupportServiceProvider',
'Illuminate\Routing\ControllerServiceProvider',
'Illuminate\Cookie\CookieServiceProvider',
'Illuminate\Database\DatabaseServiceProvider',
'Illuminate\Encryption\EncryptionServiceProvider',
'Illuminate\Filesystem\FilesystemServiceProvider',
'Illuminate\Foundation\Providers\FoundationServiceProvider',
'Illuminate\Hashing\HashServiceProvider',
'Illuminate\Mail\MailServiceProvider',
'Illuminate\Pagination\PaginationServiceProvider',
'Illuminate\Pipeline\PipelineServiceProvider',
'Illuminate\Queue\QueueServiceProvider',
'Illuminate\Redis\RedisServiceProvider',
'Illuminate\Auth\Passwords\PasswordResetServiceProvider',
'Illuminate\Session\SessionServiceProvider',
'Illuminate\Translation\TranslationServiceProvider',
'Illuminate\Validation\ValidationServiceProvider',
'Illuminate\View\ViewServiceProvider',
'Illuminate\Html\HtmlServiceProvider',
/*
* Application Service Providers...
*/
'CMSWallpaper\Providers\AppServiceProvider',
'CMSWallpaper\Providers\BusServiceProvider',
'CMSWallpaper\Providers\ConfigServiceProvider',
'CMSWallpaper\Providers\EventServiceProvider',
'CMSWallpaper\Providers\RouteServiceProvider',
],
/*
|--------------------------------------------------------------------------
| Class Aliases
|--------------------------------------------------------------------------
|
| This array of class aliases will be registered when this application
| is started. However, feel free to register as many as you wish as
| the aliases are "lazy" loaded so they don't hinder performance.
|
*/
'aliases' => [
'App'       => 'Illuminate\Support\Facades\App',
'Artisan'   => 'Illuminate\Support\Facades\Artisan',
'Auth'      => 'Illuminate\Support\Facades\Auth',
'Blade'     => 'Illuminate\Support\Facades\Blade',
'Bus'       => 'Illuminate\Support\Facades\Bus',
'Cache'     => 'Illuminate\Support\Facades\Cache',
'Config'    => 'Illuminate\Support\Facades\Config',
'Cookie'    => 'Illuminate\Support\Facades\Cookie',
'Crypt'     => 'Illuminate\Support\Facades\Crypt',
'DB'        => 'Illuminate\Support\Facades\DB',
'Eloquent'  => 'Illuminate\Database\Eloquent\Model',
'Event'     => 'Illuminate\Support\Facades\Event',
'Form'	    => 'Illuminate\Html\FormFacade',
'HTML'	    => 'Illuminate\Html\HtmlFacade',
'File'      => 'Illuminate\Support\Facades\File',
'Hash'      => 'Illuminate\Support\Facades\Hash',
'Input'     => 'Illuminate\Support\Facades\Input',
'Inspiring' => 'Illuminate\Foundation\Inspiring',
'Lang'      => 'Illuminate\Support\Facades\Lang',
'Log'       => 'Illuminate\Support\Facades\Log',
'Mail'      => 'Illuminate\Support\Facades\Mail',
'Password'  => 'Illuminate\Support\Facades\Password',
'Queue'     => 'Illuminate\Support\Facades\Queue',
'Redirect'  => 'Illuminate\Support\Facades\Redirect',
'Redis'     => 'Illuminate\Support\Facades\Redis',
'Request'   => 'Illuminate\Support\Facades\Request',
'Response'  => 'Illuminate\Support\Facades\Response',
'Route'     => 'Illuminate\Support\Facades\Route',
'Schema'    => 'Illuminate\Support\Facades\Schema',
'Session'   => 'Illuminate\Support\Facades\Session',
'Storage'   => 'Illuminate\Support\Facades\Storage',
'URL'       => 'Illuminate\Support\Facades\URL',
'Validator' => 'Illuminate\Support\Facades\Validator',
'View'      => 'Illuminate\Support\Facades\View',
],

Congratulations now you can use the Form::open() as you do in Laravel 4. If it doesn’t work, maybe you forgot to click save button! 🙂

Leave a Reply