2017-09-30 1 views
0

cakephp 3 앱의 각 입력에 기본 클래스를 추가하려고합니다. 내가 원하는 것을 예 :cakephp 3 기본 클래스를 입력에 추가합니다.

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

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

원하는 출력 : FormHelper

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

나 편집 한 입력 서식

문제는 {{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); 
    } 
} 

다음도 가능 플러그인 부트 스트랩 호환 출력을 만드는 그 원조있다 당신의 앱 조회

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

변경합니다. – ndm

+0

안녕하세요.하지만 플러그인은 부트 스트랩 3에서만 작동합니다. 부트 스트랩 4를 사용하고 있습니다. 많은 변화가 있습니다. – Matoran

관련 문제