2012-06-14 34 views
1

當使用$this->Form->input('fieldname')時,CakePHP創建一個按照慣例使用字段名的標籤元素。我知道我可以指定另一個字符串用於標籤作爲輸入法的參數,但有什麼方法可以指定模型中的標籤名稱,所以我不必在多個ctp文件中重複標籤名稱(例如,所以我只需要在一個地方改變它)?CakePHP標籤約定

回答

2

所以我創造了這個,同時快速測試,工作,但是,不能保證它沒有缺陷:

<?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 /查看/助手/ MyFormHelper.php

添加它的幫助器陣列和別名,如果你想。

添加一個public $labels陣列與field => label-text結構的模型。 希望它有效。

+0

這就像一個冠軍,對不起,我花了這麼長的時間檢查標記:) –