2012-02-22 17 views
2

CakePHPでは、Formヘルパー作成メソッドに渡すオプションをグローバルに設定することは可能ですか?CakePHPでは、Formヘルパー作成メソッドに渡すオプションをグローバルに設定することは可能ですか?

すべてのフォームに特定のフォームレイアウトを使用したいので、私は現在すべてのフォームを作成するときにこれを行う必要があります。

<?php 
echo $this->Form->create('User', array(
    'class' => 'form-horizontal', 
    'inputDefaults' => array(
     'format' => array('before', 'label', 'between', 'input', 'error', 'after'), 
     'between' => '<div class="controls">', 
     'after' => '</div>', 
     'div' => 'control-group', 
     'error' => array(
      'attributes' => array('wrap' => 'span', 'class' => 'help-inline') 
      ) 
     ) 
    )); 
?> 

これをグローバルに指定する方法があるかどうか疑問に思っていましたので、すべての作成呼び出しでそれを行う必要はありませんでした。

答えて

2

starlockeの答えは大丈夫ですが、私はこれらの3本の線を全部書きたいとは思わないでしょう。 :)これは本当に「設定データ」だとは思わない。だからここに私はどうなるのかです:

MyFormHelper extends FormHelper { 
    public function create($model, $options) { 
     $defaults = array(/* YOUR DEFAULT OPTIONS*/); 
     $options = Set::merge($defaults, $options); 
     //... 
    } 
} 

そして、単にそれを呼び出す:

ます$ this-> MyForm->( 'プロフィール')を作成します。

のいずれかに変更する2番目のパラメータに1つのオプションを付けて呼び出すか、

+0

これは私が探していたものです。私が開発しているアプリケーションでは、Forヘルパーを拡張する必要があります。フォームをかなり修正したいのですが。 CakePHPの最新バージョンはヘルパーエイリアスをサポートしているので、MyFormはどこでも使用する必要はありません。 – veganista

6

どこかの設定を行います(すなわち:app/config/core.php - または同様に含まれるファイルあなたが拡大した場合、コンフィギュレーションシステム)

// [...the rest of the config is above...] 
Configure::write('MyGlobalFormOptions', array(
'class' => 'form-horizontal', 
'inputDefaults' => array(
    'format' => array('before', 'label', 'between', 'input', 'error', 'after'), 
    'between' => '<div class="controls">', 
    'after' => '</div>', 
    'div' => 'control-group', 
    'error' => array(
     'attributes' => array('wrap' => 'span', 'class' => 'help-inline') 
     ) 
    ) 
)); 

それはこのようになります使用して...

<?php 
echo $this->Form->create('User', Configure::read('MyGlobalFormOptions')); 
?> 

特定の特別な書式に特化する必要がある場合...

<?php 
$more_options = array('class'=>'form-vertical'); 
$options = array_merge(Configure::read('MyGlobalFormOptions'), $more_options); 
echo $this->Form->create('Profile', $options); 
?> 
関連する問題