当我从其他模型(admin)关系中调用值时,为什么文本框会在Created By
下方消失。无论模型关系如何,我如何才能显示文本框?
有关问题的详情,请参阅屏幕截图:
答案 0 :(得分:0)
Yii CGridView不为那些不属于所显示表的列创建inputFiled(与关系一样)。如果你想显示一个过滤器框(下拉列表,或任何你想要的,一个简单的方法是创建一个自定义CDataColumn,在网格中使用它:
array(
'name'=>'customer.createdBy.name',
'header' => 'Created by',
'class' => 'application.modules.mine.components.DataColumnCreatedBy',
),
现在定义扩展列以呈现过滤器:
class DataColumnCreatedBy extends CDataColumn
{
public function renderFilterCell()
{
echo "<td>";
echo CHtml::inputField('createdBy');
echo "</td>";
}
}
答案 1 :(得分:0)
最佳解决方案是添加下拉列表,因为您必须在createdBy字段中包含ID,并且不希望用户使用数字ID进行搜索。以下文章可以帮助您
如果您仍想添加文本框,则只需将文本框html(即<input type="text" name="ModelName[createdBy]">
)指定为CDataColumn的“过滤器”属性
'column_id'=> array(
'name' => 'createdBy',
'value' => '$data->relatedModel->createdBy',
'filter'=> '<input type="text" name="ModelName[createdBy]">'
),
希望这有帮助