質問

私はsymfonyの1.4とDoctrineを使用しています。

のは、私は2つのクラスがあるとしましょう:。ブランドと製品を

私は管理者ジェネレーターベースの管理者に新製品を作成すると、

、私はドロップダウンリストからブランドを選択したいと思います。 管理ジェネレーターは私のために、自動的にsfWidgetFormDoctrineChoiceを作成することをやっている。

問題は、ブランドは、IDによって順序付けされていることです。私は彼らが彼らの「ラベル」フィールドで注文することがしたいと思います。

私はProductFormクラスで以下のなかったことを行うために:

$this->widgetSchema['brand_id']->addOption('order_by','label');

しかし、私は次のエラーを取得する:

  

構文エラーまたはアクセス違反:1064   あなたのSQL構文でエラーが発生しています。   マニュアルをに対応していることを確認します   以下のためのMySQLサーバのバージョン   右の構文はラインで「」の近くに使用します   1.障害のクエリ:「SELECTは、ASがb__id B.ID ASをb.external_id   b__external_id、b__label AS b.label、   b__created_at AS b.created_at、   FROM b__updated_at AS b.updated_at   L AによるブランドB命令」

ORDER BY文は本当に奇妙です。文によって順序の名前をカットしているようだ、なぜ私は理解していません。

編集はどうやら「ORDER_BY」オプションは、2番目のパラメータとして配列を期待しています。どのような値が、それは期待していますか?

役に立ちましたか?

解決

彼が正しい答えたので、私は私の解決策を見つけたとき、

私はbenlumleyのソリューションをしようとしませんでした。それは私がやって終了何よりも面倒なようです。

私はこのすべてが動作していた方法を見つけ出すためにソースコードを見ていました。 それは「ORDER_BY」オプションは、1が結果と「ASC」または「DESC」のいずれかを注文したいのフィールドを指定する配列を必要と判明します:

$this->widgetSchema['product_id']->addOption('order_by',array('label','asc'));

それは魔法のように動作します。

他のヒント

あなたがここで見てみる必要があります:

http://trac.symfony-project.org/wiki/HowtoSortAdminGeneratorListByForeignTableNameする

その、それは動作しませんリンクプラグインの疑いがあるので、symfonyの古いバージョンのオフに基づいて。

:それの核心は、あなたがインターセプトにアクションにメソッドを追加し、この特定のフィールドでのソートのデフォルト処理を修正しなければならないということです - しかし、私はこの方法はまだ健全であるべきだと思います

の教義について、あなたが定義する必要がある/オーバーライドaddSortQuery、Propelのため、addSortCriteriaます。

あなたが自動生成されたクラスは、それがどのように動作するかのこつを得るためにどのように見えるかを確認するためにキャッシュフォルダ内のルックを取るオススメます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top