CakePHP: метка поля в модели - PullRequest
1 голос
/ 16 марта 2010

Есть ли подходы для установки в метке поля модели? Я не хочу использовать свойство label в помощнике по форме.

Ответы [ 5 ]

2 голосов
/ 16 марта 2010

Пожалуйста, убедитесь, что я правильно понимаю, вы хотите установить метку поля в модели, а не использовать помощник по форме?

Это нарушает базовую архитектуру MVC. Хотя Cake гибок в некоторых вещах, я не думаю, что это возможный вариант. Я также не понимаю, почему вы хотите это сделать - есть ли причина, по которой вы не хотите использовать свойство label в помощнике по форме?

Основная проблема заключается в том, что метка для формы является частью уровня представления, а модель представляет данные. Таким образом, невозможно (и я не могу представить ситуацию, в которой это имело бы смысл ...) назначить метку для поля данных, которое затем использовалось бы при каждом выводе этого поля.

Если я неправильно понял ваш вопрос, уточните.

1 голос
/ 14 февраля 2014

Что я делаю, так это устанавливаю соглашение в моих моделях. Я добавил общедоступный атрибут fieldLabels для всех моделей, чтобы назначать текстовые метки по умолчанию для общих форм.

Пример:

class MyModel extends AppModel {
    // ...
    public $fieldLabels = array(
        'username' => 'User name',
        'email' => 'e-mail address',
        'phone' => 'Phone No.',
    );
// ....
}

Затем я передаю метки представлению и использую дополнительный параметр для ввода, как сказал Сибидиба:

echo $this->Form->input('title', array(
                        'label' => $fieldLabels['title'] . ': ',
                  ));

Если мне понадобятся специальные ярлыки, я буду обрабатывать каждый случай как исключение. Конечно, если вы хотите интернационализации, это совсем другая тема.

0 голосов
/ 18 марта 2010

я предлагаю вам напрямую использовать помощника, которого вы хотите .. bcos $ form-input () создает div .. метки ..

лично мне пришлось отсеять это в каждой строке

с прямым помощником типа

$ форма-> текст () $ Форма-> TextArea () $ Форма-> выберите ()

Вы можете сохранить код намного чище.

Примечание: $ form-> input экономит время при правильном использовании ...

0 голосов
/ 17 марта 2010

Не уверен на 100%, но я думаю, что вы ищете Model::displayField

0 голосов
/ 17 марта 2010

Хотите установить значение метки? Это делается в представлении, но, конечно, значение может происходить из контроллера / модели. Как это:

echo $this->Form->input('title', array(
                    'label' => $titleLabel,
                    ));

Вы также можете отключить элемент метки:

echo $this->Form->input('title', array(
                    'label' => null,
                    ));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...