当我从其他模型调用数据时,为什么我在yii管理用户时缺少搜索框?

时间:2012-06-13 12:01:32

标签: php frameworks yii

当我从其他模型(admin)关系中调用值时,为什么文本框会在Created By下方消失。无论模型关系如何,我如何才能显示文本框?

有关问题的详情,请参阅屏幕截图:

screenshot

2 个答案:

答案 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进行搜索。以下文章可以帮助您

http://help.discretelogix.com/php/yii/replace-text-box-with-drop-down-list-in-filter-of-cgridview.htm

如果您仍想添加文本框,则只需将文本框html(即<input type="text" name="ModelName[createdBy]">)指定为CDataColumn的“过滤器”属性

'column_id'=> array(
        'name' => 'createdBy',
        'value' => '$data->relatedModel->createdBy',
        'filter'=> '<input type="text" name="ModelName[createdBy]">'

),

希望这有帮助