options['inputDefaults']
各フォームよりもサイトレベルで定義する方法はありますか
質問する
1641 次
3 に答える
11
TLDR:
以下の 2 つのコード チャンクをそれぞれの場所に貼り付けてから、$defaultOptions
配列を好きなように変更します。Form->create
の にデフォルトを追加する以外は、FormHelperの機能を変更しませんinputDefaults
。
説明とコード:
独自のカスタムを作成することで、FormHelper を拡張できます (思ったより簡単です) MyFormHelper
。
<?php
//create this file called 'MyFormHelper.php' in your View/Helper folder
App::uses('FormHelper', 'View/Helper');
class MyFormHelper extends FormHelper {
public function create($model = null, $options = array()) {
$defaultOptions = array(
'inputDefaults' => array(
'div' => false,
'label' => false
)
);
if(!empty($options['inputDefaults'])) {
$options = array_merge($defaultOptions['inputDefaults'], $options['inputDefaults']);
} else {
$options = array_merge($defaultOptions, $options);
}
return parent::create($model, $options);
}
}
次に、AppController に、次の方法で Form ヘルパーを含めます (既に $helpers 変数がある場合は、'Form' => ...
それに追加するだけです)。
public $helpers = array(
'Form' => array(
'className' => 'MyForm'
)
);
これにより、 を呼び出すたびに$this->Form
、実際にカスタム 'MyFormHelper' が呼び出されますinputDefaults
。指定されていない場合は が設定され、Cake の FormHelper にある通常のロジックを実行し続けるだけです。
于 2012-09-02T16:02:13.947 に答える