2017-09-30 1 views
0

Ich versuche, eine Standardklasse für jeden Eingang in meinen cakephp 3 App hinzuzufügen. Beispiel von dem, was ich will:cakephp 3 add Standardklasse der Eingänge

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

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

gewünschte Ausgabe: <input class="form-control is-invalid"/>

für diese i Eingabemaske von Formhelper bearbeitet haben

$this->viewBuilder()->setHelpers([ 
     'Form' => [ 
      'templates' => [ 
       'input' => '<input class="form-control" type="{{type}}" name="{{name}}"{{attrs}}/>' 
      ] 
     ] 
    ]); 

das Problem ist, dass {{attrs}} möglicherweise andere Klassen enthalten. Hast du eine Idee, wie es geht?

Antwort

1

gelöst: D ein Formhelper create-Methode Steuerung und fügt Klasse außer Kraft zu setzen.

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

dann AppView ändern

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

Es gibt auch Plugins zur Verfügung, die Hilfe bei der Erstellung Bootstrap-kompatible Ausgabe: ** https: //github.com/FriendsOfCake/awesome-cakephp#templating**. – ndm

+0

Hallo, ich weiß, aber die Plugins arbeiten mit Bootstrap-3 nur. Ich bin mit Bootstrap-4, es ist eine Menge Veränderungen haben. – Matoran