In your composer.json make sure you include illuminate/html.
"require": {
"laravel/framework": "5.0.*",
"illuminate/html" : "5.*",
Run composer update.
In app/config/app.php
// add this to the providers array
'Illuminate\Html\HtmlServiceProvider',
'App\Providers\MacroServiceProvider',
// add this to the aliases array
'Form' => 'Illuminate\Html\FormFacade',
'HTML' => 'Illuminate\Html\HtmlFacade',
Create like this:
app/Services/Macros.php
<?php namespace App\Services;
use Illuminate\Html\FormBuilder;
/**
* Class Macros
* @package App\Http
*/
class Macros extends FormBuilder {
/**
* @param $name
* @param null $selected
* @param array $options
* @return string
*/
public function selectState($name, $selected = null, $options = array())
{
$list = [
'' => 'Select One...',
'AL' => 'Alabama',
'AK' => 'Alaska',
'AZ' => 'Arizona'
];
return $this->select($name, $list, $selected, $options);
}
}
EDIT: Add a service Provider:
app/Providers/MacroServiceProvider.php
<?php namespace App\Providers;
use App\Services\Macros;
/**
* Class MacroServiceProvider
* @package App\Providers
*/
class MacroServiceProvider extends \Illuminate\Html\HtmlServiceProvider {
/**
* Bootstrap the application services.
*
* @return void
*/
public function boot()
{
//
}
/**
* Register the application services.
*
* @return void
*/
public function register()
{
parent::register();
$this->app->bindShared('form', function($app)
{
$form = new Macros($app['html'], $app['url'], $app['session.store']->getToken());
return $form->setSessionStore($app['session.store']);
});
}
}
Then include in a view like this:
{!! Form::selectState('state', 'AK', ['class' => 'form-control']) !!}
I think that should set you on your way :)