Laravel extend Form class

后端 未结 1 446
情话喂你
情话喂你 2020-12-03 09:14

I\'m trying to extend the Form class in L4.1 but I seem to be missing something. My file is named FormBuilder.php based on the API and is saved in

1条回答
  •  情深已故
    2020-12-03 09:43

    To extend/swap a Laravel core class, you can create a Service Provider:

    File: app/App/Libraries/Extensions/FormBuilder/FormBuilderServiceProvider.php

    app->bindShared('formbuilder', function($app)
            {
                $form = new FormBuilder($app['html'], $app['url'], $app['session.store']->getToken());
    
                return $form->setSessionStore($app['session.store']);
            });
        }
    
        /**
         * Get the services provided by the provider.
         *
         * @return array
         */
        public function provides()
        {
            return array('formbuilder');
        }
    
    }
    

    Create a Facade for it:

    File: app/App/Libraries/Extensions/FormBuilder/FormBuilderFacade.php

    This would be your namespaced service class:

    File: app/App/Libraries/Extensions/FormBuilder/FormBuilder.php

    "field-{$name}");
    
            return $this->input('text', $name, $value, $options);
        }
    
    }
    

    Open app/config/app.php and your Service Provider to the list

    'App\Libraries\Extensions\FormBuilder\FormBuilderServiceProvider',
    

    And replace Laravel's Form alias with yours

        'Form'            => 'App\Libraries\Extensions\FormBuilder\FormBuilderFacade',
    

    To test I created a router like this:

    Route::any('test', function() {
    
       return e(Form::text('first_name'));
    
    });
    

    And it gave me this result:

    
    

    0 讨论(0)
提交回复
热议问题