2017-09-30 4 views
0

cakephp 3アプリで入力ごとにデフォルトのクラスを追加しようとしています。私が何をしたいの 例:cakephp 3デフォルトのクラスを入力に追加する

入力: <echo $this->Form->control('email');

出力: <input class="form-control" class="is-invalid"/>

所望の出力:このため <input class="form-control is-invalid"/>

私はFormHelperの

$this->viewBuilder()->setHelpers([ 
     'Form' => [ 
      'templates' => [ 
       'input' => '<input class="form-control" type="{{type}}" name="{{name}}"{{attrs}}/>' 
      ] 
     ] 
    ]); 
の入力テンプレートを編集しました

問題は{{attrs}}に他のクラスが含まれている可能性があります。どのようにそれを行うか考えていますか?

答えて

1

解決済み:D メソッドコントロールをオーバーライドしてクラスを追加するFormHelperを作成します。 **します。https://github.com/FriendsOfCake/awesome-cakephp#templating**

class BootstrapFormHelper extends FormHelper{ 
    public function control($fieldName, array $options = []){ 
     if($this->request->is('post') && !$this->isFieldError($fieldName)){ 
      $options['class'] = 'form-control is-valid'; 
     }else{ 
      $options['class'] = 'form-control'; 
     } 
     return parent::control($fieldName, $options); 
    } 
} 

はその後も利用可能なプラグインのブートストラップ互換の出力を生成している援助ありますあなたのAPPVIEW

class AppView extends View{ 
    public function initialize() 
    { 
     $this->loadHelper(
      'Form', [ 
       'className' => 'BootstrapForm', 
      ] 
     ); 
    } 
} 
+0

変更します。 – ndm

+0

こんにちは私は知っているが、プラグインはブートストラップ3でのみ動作します。私はブートストラップ4を使用しています、それは多くの変更があります。 – Matoran

関連する問題