it-swarm-ja.tech

エラー「致命的なエラー:非オブジェクトでのメンバー関数getKeyName()の呼び出し」、ただしテーブルなし?

小さなコンポーネントを書いて、ショップコンポーネントからデータをエクスポートします。これが私の最初のコンポーネントです。「致命的なエラー:非オブジェクトPATH\legacy\model\admin.phpのメンバー関数getKeyName()への呼び出し行885 "、私はいくつかの解決策を見つけましたが、私の問題は新しいテーブルを作成しないことです。私の質問は新しいsqlテーブルを回避する方法を教えてください。既存のコンポーネントのテーブルを使用していて、それらは私のコンポーネントで編集されていないためです。

私の情報源:

http://forum.joomla.org/viewtopic.php?f=620&t=666986
http://stackoverflow.com/questions/21156707/fatal-error-call-to-a-member-function-getkeyname
http://stackoverflow.com/questions/12313272/error-call-to-a-member-function-getkeyname-component-for-joomla-2-5

この解決策から、新しいテーブルが必要であることを理解していますが、不要です...

1
jExchange

JFormは通常、JModelAdminと一緒に使用するとデータベーステーブルの列にマップされるため、列の名前がaddの場合、addはそのテーブルの列になるように検索します。

コンテンツコンポーネント(記事)を調べて、いくつかのフォームフィールドを調べた場合、データベーステーブルでコンテンツを確認すると、名前が一致していることがわかります。 JFormを使用する場合の最善の方法は、独自のロジックを適用することです。そのため、コントローラーでJModelLegacyを使用して、デフォルトではなく、独自のモデル関数をキャッチして直接保存します。

JModelAdminのほとんどすべての関数で、$table = $this->getTable();を追加して、テーブルからデータを渡したり、テーブルからデータを取得したりできるようにします。ただし、JModelLegacyではJFormに直接接続されていませんが、そのサウンドからは、フォームを表示するためのクリーンな方法が必要なため、ビューにそのロジックを追加することをお勧めしますとにかくクラス(view.html.php

ただし、JModelAdminの保存/取得関数をオーバーライドしてそれを利用することはできますが、全体としてはJModelLegacyを使用するよりも作業が増える可能性があります。テーブルを使用する一般的なJoomlaの方法を使用していない場合は、コードのカスタマイズが少なくて済み、コードをよりカスタマイズできます。

4
Jordan Ramstad