1

を使用する場合$this->Form->input('fieldname')、CakePHP は慣例によりフィールド名を使用する label 要素を作成します。ctp入力メソッドへの引数としてラベルに使用する別の文字列を指定できることはわかっていますが、モデルでラベル名を指定できる方法はないので、複数のファイルでラベル名を繰り返す必要はありません(たとえば、1 か所で変更するだけで済みます)。

4

1 に答える 1

2

だから私はこれを作成して簡単なテストを行いましたが、バグがないことを保証することはできません:

<?php
App::uses('FormHelper', 'View/Helper');
class MyFormHelper extends FormHelper {

    public function label($fieldName = null, $text = null, $options = array()) {
        if ($text === null) {
            $entity = $this->entity();
            $field = array_pop($entity);
            $model = $this->model();
            $object = $this->_models[$model];
            if (isset($object->labels[$field])) {
                $text = $object->labels[$field];
            }
        }
        return parent::label($fieldName, $text, $options);
    }

}

それをapp/View / Helper/MyFormHelper.phpにドロップします

ヘルパー配列に追加し、必要に応じてエイリアスを作成します。

public $labels構造を持つモデルに配列を追加しfield => label-textます。それがうまくいくことを願っています。

于 2012-06-14T06:43:30.127 に答える