0

我知道可以在 CDataColumn 的 value 属性内使用一种条件语句,如 CDataColumn的“value”内的问题条件语句中所述。我想知道是否有一种方法可以在尝试显示模型之前检查模型是否确实设置了值。我的问题出现了,因为我的模型 Source 有一个可选关系“国家”,不一定要为 Source 的所有实例设置。因此,当我在 Source CDataColumn 中访问国家/地区名称时,我得到了 PHP

试图获取非对象的属性

.. 如果该网格中的任何来源没有设置其国家/地区。一世

有什么方法可以检查关系是否设置在列的“值”属性内?

4

1 回答 1

1

你应该试试这个(你应该name用需要的属性替换):

array(
  'name'=>'country',
  'value'=>'(isset($data->country)) ? $data->country->name : ""',
),

您还可以在 Source 模型中使用 getter,例如:

public function getCountryName()
{
  // I assume country_id is the foreign key
  if (isset($this->country_id) && isset($this->country))
    return $this->country->name;

  return '';
}

有了这个 getter,你只需要将它添加到你的 gridview 列中:

  'countryName',
于 2013-04-23T14:20:21.743 回答