型号名称:listing
;
字段名称:contact_name
。
涉及到用户输入,因此我想使用getContactName
的某些变体来一致地格式化输出,即,对$model->contact_name
的任何调用都将返回格式化的输出。是的,例如,我可以使用getContactName
和$model->contactName
,但是我没有找到可以与默认getcontact_name
一起使用的$model->contact_name
的任何变体。
我知道我可以配置Gii来创建一些附加功能以及其他各种解决方法,但是我对一个像样的Google感兴趣的是是否有一个简单的解决方案。
答案 0 :(得分:2)
您可以为所需的模型覆盖afterFind()
方法并覆盖默认值,或将默认值格式化为所需的格式。
您可以通过将以下内容添加到模型Listing
中来覆盖该方法。
让我们说说,我们需要格式化默认联系人姓名,该姓名与表中的rich-harding
一样保存,我们将其格式化为Rich Harding
public function afterFind() {
parent::afterFind();
$names=explode("-",$this->contact_name);
$this->contact_name=implode(" ", array_map('ucfirst',$names));
}
答案 1 :(得分:2)
getContact_name()
为名称的属性(或常规对象属性),则 contact_name
将不起作用。来自数据库的属性优先于getter / setter-您可以在__get()
source code中看到。如果您拥有具有该名称的不动产,显然__get()
将永远不会被调用。因此,将按以下顺序搜索值:
您应该使用不同的名称(contactName
),或者使用afterFind
事件进行格式化或覆盖__get()
来更改数据源的顺序(这可能很棘手)。您可能也对this PR感兴趣。