有没有办法在站点级别定义 options['inputDefaults']
而不是在每个表单中定义
最佳答案
TLDR:
将下面的 2 段代码粘贴到各自的位置,然后将 $defaultOptions
数组更改为您想要的任何内容 - 瞧。除了向 Form->create
的 inputDefaults
添加默认值外,它不会改变任何 FormHelper 的功能。
解释&代码:
您可以通过自定义 MyFormHelper
来扩展 FormHelper(比听起来容易):
<?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 中,按以下方式包含 Form 助手(如果您已经有一个 $helpers 变量,只需添加 'Form' => ...
到它):
public $helpers = array(
'Form' => array(
'className' => 'MyForm'
)
);
这样一来,每当您调用 $this->Form
时,它实际上都会调用您的自定义“MyFormHelper”——它唯一做的就是设置 inputDefaults
,如果它们未指定,然后继续执行 Cake 的 FormHelper 中的正常逻辑。
关于php - 在站点级别定义 cakephp inputDefaults 的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12235301/