Yii从模型改变字段格式

时间:2014-12-22 21:12:34

标签: php yii2

我已按照 Yii2 指南尝试使用国家/地区控制器。我在名为area的数据库中添加了一个字段,该数据库将成为国家/地区。在Country模型中,我使用了afterFind事件,如下所示:

public function afterFind()
    {
      if ($this->area == NULL){
        //$this->area-> What Could I do here?!!
        $this->area = 'N/A';        
      }   
      return true;
    }

如果没有区域设置为N/A area字段为浮点数,我想更改区域的默认值。它在更新视图中工作正常。但是,鉴于actionView,它返回有关格式化的错误。在该视图中,我按如下方式对属性进行了格式化:

<?= DetailView::widget([
        'model' => $model,
        'attributes' => [
            ['attribute' => 'code','format' => 'raw','value' => "{$model->code} <img style=\"box-shadow:0 0 5px #0099ff\" src=\"flags/".strtolower($model->code).".png\" />"],
            'name',
            ['attribute' => 'population', 'format' => 'decimal'],
            ['attribute' => 'area', 'format' => 'decimal'],
        ],
    ]) ?>
  

错误是:参数无效 - yii \ base \ InvalidParamException

     

&#39; N / A&#39;不是数值。

我的问题是:如何从模型中访问字段格式?

1 个答案:

答案 0 :(得分:2)

我会删除之后的查找,您最好使用值null然后使用文本&#39; N / A&#39;

['attribute' => 'area', 'value' => function($model, $index, $widget){
                    return ($model->area ? Yii::$app->formatter->asDecimal($model->area) : 'N/A');
                }],

您可以像这样定义属性,这应该可以解决问题。