Ответ 1
TL;DR:
Вставьте 2 куска кода ниже в их соответствующие пятна, затем измените массив $defaultOptions
на то, что вы хотите - вуаля. Он не изменяет никаких функций FormHelper, кроме добавления значений по умолчанию в Form->create
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 включите помощник формы следующим образом (если у вас уже есть переменная $helpers, просто добавьте 'Form' => ...
к ней):
public $helpers = array(
'Form' => array(
'className' => 'MyForm'
)
);
Это делает так, что всякий раз, когда вы вызываете $this->Form
, он на самом деле вызывает ваш пользовательский "MyFormHelper" - и единственное, что он делает, это установить inputDefaults
, если они не указаны, а затем продолжить выполнение нормальной логики найденный в Cake FormHelper.