adminジェネレータで画面を生成すると、sort条件はセッション情報として登録されるようです
schema.ymlをいじって、気に入らないテーブル名称を変更してみました。当然、関連する部分のコードもすべて名称変更が必要です。やっと全部終わって、動かしてみると、HogePeer::translateFiledNames()でエラーが発生します。変更前のフィールド名が使われています。何度、コードを調べても変更前のフィールド名は残っていません。よく調べてみると、adminジェネレータの生成する次のコードに原因があるようでした。
protected function addSortCriteria($c) { if ($sort_column = $this->getUser()->getAttribute('sort', null, 'sf_admin/hoge/sort')) { $sort_column = sfIdmAssignPeer::translateFieldName($sort_column, BasePeer::TYPE_FIELDNAME, BasePeer::TYPE_COLNAME); if ($this->getUser()->getAttribute('type', null, 'sf_admin/hoge/sort') == 'asc') { $c->addAscendingOrderByColumn($sort_column); } else { $c->addDescendingOrderByColumn($sort_column); } } }
ログインユーザの属性からソートに使用するカラム名を持ってきています。
gtAttribute()の実装はよく調べませんでしたが、ブラウザからCookieを削除したらエラーは発生しなくなりました。
なお、Cookieを削除する前に一度Apacheを再起動したのですが、この時は動作に変わりがありませんでした。セッション情報もDBに入れてるんでしょうか?
でも、それらしいテーブルは見当たらないし、sfSessionStorageのコードもザッと眺めてみましたが、ファイルに書き込んでるらしいところはありませんでした。ちょっと不思議です。