Хотя может показаться немного экстремальным подход к переопределению одного свойства, вы можете достичь этого, расширив базовый FormHelper. Это позволит вам сделать оригинальное предложение Анх Фама по умолчанию для всех экземпляров FormHelper:
// app/views/helpers/app_form.php
App::import('Helper', 'Time');
class AppFormHelper extends FormHelper {
public $_inputDefaults = array('error' => false);
}
Теперь, чтобы использовать это как есть в CakePHP 1.3, вы должны будете использовать «AppForm
» во всем приложении, чтобы ссылаться на этого помощника (т. Е. $this->AppForm->input()
). CakePHP 2.0 вводит псевдонимы помощников, чтобы преодолеть это, но сейчас нужно прибегнуть к хитрости, чтобы продолжать использовать вместо «Form
». В одном сообщении в блоге, которое я нашел, показано, как ретранслировать функциональность , а в другом - разрешить помощнику сделать это . Лично я без проблем использую следующее:
// app/views/app.php
class AppView extends View {
function &_loadHelpers(&$loaded, $helpers, $parent = null) {
$return = parent::_loadHelpers($loaded, $helpers, $parent);
# rename App helpers (ie. AppHtml -> Html)
foreach ($return as $helperName => $helper) {
if (substr($helperName, 0, 3) === 'App') {
$newHelperName = substr($helperName, 3);
$return[$newHelperName] = $return[$helperName];
}
}
# done
return $return;
}
}
Чтобы использовать новые созданные классы выше, просто добавьте следующее к вашему AppController
:
// app/app_controller.php
class AppController extends Controller {
public $helpers = array(/*...*/, 'AppForm');
public $view = array('App');
}