使用$this->Form->input('fieldname')
时,CakePHP会创建一个标签元素,按惯例,它使用fieldname。我知道我可以指定另一个用于标签的字符串作为输入方法的参数,但有没有办法可以在模型中指定标签名称,所以我不必重复多个{{ 1}}文件(例如我只需要在一个地方更改它)?
答案 0 :(得分:2)
所以我创建了这个并进行了快速测试,但是,不能保证它没有bug:
<?php
App::uses('FormHelper', 'View/Helper');
class MyFormHelper extends FormHelper {
public function label($fieldName = null, $text = null, $options = array()) {
if ($text === null) {
$entity = $this->entity();
$field = array_pop($entity);
$model = $this->model();
$object = $this->_models[$model];
if (isset($object->labels[$field])) {
$text = $object->labels[$field];
}
}
return parent::label($fieldName, $text, $options);
}
}
将其放入app / View / Helper / MyFormHelper.php
中如果您愿意,可将其添加到辅助数组并为其设置别名。
将public $labels
数组添加到具有field => label-text
结构的模型中。
希望它有效。