В CakePHP возможно ли задать параметры, которые вы передаете в метод создания помощника формы глобально? - PullRequest
2 голосов
/ 22 февраля 2012

В CakePHP возможно ли задать параметры, которые вы передаете методу создания помощника формы, глобально?

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

<?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')
            )
        )
    ));
?> 

Мне было интересно, есть ли способ указать это глобально, поэтому мне не нужно было делать это при каждом вызове create.

Ответы [ 2 ]

6 голосов
/ 22 февраля 2012

Создайте конфигурацию где-нибудь (то есть: 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);
?>
2 голосов
/ 23 февраля 2012

Ответ Старлока хорош, но я бы даже не хотел писать эти три строки повсюду.:) Я тоже не думаю, что это действительно "данные конфигурации".Вот что я бы сделал:

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

Затем просто назовите его:

$ this-> MyForm-> create ('Profile');

или вызовэто с одной опцией во втором параметре, которую вы хотите где-то изменить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...