1

Created By他のモデル (管理者) リレーションから値を呼び出すと、テキスト ボックスが下に消えるのはなぜですか? モデルの関係に関係なく、テキストボックスを表示するにはどうすればよいですか?

問題の詳細については、スクリーンショットを参照してください。

スクリーンショット

4

2 に答える 2

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 の「filter」プロパティに割り当てるだけです。

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

)、

お役に立てれば

于 2012-06-13T13:11:28.097 に答える
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>";
    }
}
于 2012-06-13T12:56:58.300 に答える