Laravel 4 の Illuminate\Html\FormBuilder クラスを微調整して、入力の種類に対応する各入力に CSS クラスを自動的に含めるようにしたいと思います (例: <input type="radio" class="radio" />)。
オリジナルを拡張する独自のクラスを作成しました。
namespace Shady;
class FormBuilder extends Illuminate\Html\FormBuilder {
public function input($type, $name, $value = null, $options = array()) {
$options['class'] = isset($options['class'])
? implode(' ', array_unique(array_merge(array($type), explode(' ', $options['class']))))
: $type;
parent::input($type, $name, $value, $options);
}
}
さて、問題は、Laravel 4 でそれを使用するにはどうすればよいかということです。
app/config/app.php を調べたところ、HTML Fascade クラスへの参照しかありません。それが Illuminate\Support\ServiceProvider\HtmlServiceProvider クラスにどのように、またはどこで変換されるかはわかりませんが、そのクラスは FormBuilder クラス、ala をハードコーディングします。
protected function registerFormBuilder()
{
$this->app['form'] = $this->app->share(function($app)
{
$form = new FormBuilder($app['html'], $app['url'], $app['session']->getToken());
return $form->setSessionStore($app['session']);
});
}
クラスのバージョンを何らかの方法でロードするようにだますことができるかどうか疑問に思っていますか? または、そうでない場合、この機能をスムーズかつきちんと追加するにはどうすればよいでしょうか? 乾杯。