0

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']);
    });
}

クラスのバージョンを何らかの方法でロードするようにだますことができるかどうか疑問に思っていますか? または、そうでない場合、この機能をスムーズかつきちんと追加するにはどうすればよいでしょうか? 乾杯。

4

3 に答える 3

0

HTMLヘルパー クラスを拡張する必要はありません。代わりに、CSS セレクターを使用して要素を選択します。

独自のメソッドを作成する場合は、HTML::macro()

参照: http://laravel.com/api/source-class-Illuminate.Html.HtmlBuilder.html#32

そして:http://laravel.com/api/source-class-Illuminate.Html.HtmlBuilder.html#390

于 2013-07-03T18:32:31.500 に答える