web-dev-qa-db-ja.com

一部のSimpleCRMメニュー項目がエラーで失敗する:nullでのメンバー関数getModel()の呼び出し

Joomlaのバージョンを3.9.1から3.9.4にアップグレードした直後に、バックエンドの特定のSimple CRMサブメニューにアクセスできなくなりました。

enter image description here

会社コードのリンクは正しく機能します。
http://localhost/jdem02/administrator/index.php?option=com_gscrm&view=Codes

以下は行いません:

  • シンプルなCRM
    http://localhost/jdem02/administrator/index.php?option=com_gscm

  • ユーザー管理
    http://localhost/jdem02/administrator/index.php?option=com_gscrm&view=Beads

  • ユーザーの役割
    http://localhost/jdem02/administrator/index.php?option=com_gscrm&view=Roles

  • 通貨とレート
    http://localhost/jdem02/administrator/index.php?option=com_gscrm&view=Currencies

それらはすべて同じエラーを生成します:

0 nullのメンバー関数getModel()の呼び出し
C:\ wamp64\www\jdem02\libraries\fof30\Form\Field\Numeric.php:25

だから 誰が私のチーズを動かしたの?

どうすれば修正できますか?

pS Joomlaのバージョンを下げる には興味がありません。


更新:

これは私の administrator/components/com_gscrm/Viewディレクトリ構造:

enter image description here

次に、ロールform.default.xmlスクリプトを示します。

<?xml version="1.0" encoding="UTF-8"?>
<form type="browse" 
    show_header="1" 
        show_filters="1" 
            show_pagination="1" 
                norows_placeholder="COM_GSCRM_COMMON_NORECORDS">
  <headerset>
    <header name="gscrm_role_id" type="RowSelect" label="COM_GSCRM_ROLES_GSCRM_ROLE_ID_LABEL" />
    <header name="role_id" label="COM_GSCRM_ROLES_GSCRM_ROLE_ID_LABEL" description="COM_GSCRM_ROLES_GSCRM_ROLE_ID_DESC"/>         
    <header name="title" type="Searchable" label="COM_GSCRM_ROLES_TITLE_LABEL"/>
    <header name="parent" label="COM_GSCRM_ROLES_PARENT_LABEL" sortable="true"/>
    <header name="child" label="COM_GSCRM_ROLES_CHILD_LABEL" sortable="true"/>
    <header name="code" type="Searchable" label="COM_GSCRM_ROLES_CODE_LABEL" sortable="true"/>
    <header name="enabled" type="Published" label="COM_GSCRM_ROLES_ENABLED_LABEL" sortable="true"/>
    <header name="access" type="AccessLevel" label="COM_GSCRM_ROLES_ACCESS_LABEL" sortable="true"/>
  </headerset>

  <fieldset name="items">
    <field name="gscrm_role_id" type="SelectRow"/>
    <field name="gscrm_role_id" id="role_id" type="text"/>

    <field name="title" type="Sortable" url="index.php?option=com_gscrm&amp;view=Role&amp;id=[ITEM:ID]&amp;[TOKEN]=1"/>

    <field name="parent" type="Numeric"/>
    <field name="child" type="Numeric"/>

    <field name="code" type="ViewTemplate" emptylabel="1" 
                        source="admin:com_gscrm/Beads/Code_name" 
    />  
    <field name="enabled" type="Actions"/>
    <field name="access" type="AccessLevel"/>
  </fieldset>
</form>
1
mickmackusa

この質問(問題)は、昨日成功し、かなり迅速に解決され、ソリューションで@Mickと効果的に連携しました。そして、この質問は非常に詳細でよく説明されており、Joomlaからの正確なエラーメッセージが含まれているため、SEでよく構築された質問の良い例です。

解決策は比較的簡単でした:廃止された数値型を変更する必要がありましたフォームフィールドからnumber typeこれらのフィールドがJoomlaおよびFOFでも定義されているXMLファイルのフォームフィールド。

type=”number”の代わりにtype=”numeric”を使用するフォームフィールド定義で、問題は非常に簡単に解決されました。

問題と解決策についての短い説明:

エラーメッセージには2つの重要なものが表示されました:1。エラーが発生したファイル(正確にどの行に)2 。また、コンポーネントがFOF(Framework on Framework)を使用してビルドされていることも明らかになりました。クラスはfof30ライブラリJoomla 3で。

エラーメッセージで通知された 特定のファイル を開くと、ファイルはフォームフィールドの作成に関するものであり、フィールドがメッセージで非推奨になっていることもすぐにわかります。

下位互換性フィールド。 PHP 7.2以降では使用しないでください。

そして、メモを追加しました:@ deprecated 3.1

次に、fof30ライブラリを確認すると、fofのバージョン番号が3.4.2であることがわかります。

最後に、FOFの作成者のおかげで、ファイル内に非常に役立つメッセージが見つかります: "…代わりに数値フィールドタイプ。」

したがって、この数値フィールドクラスでは、フィールドの構築に失敗しますが、対応するXMLファイルでフォームフィールドタイプをnumberに変更すると、フォームとフィールドが作成される場所で、問題を解決する必要があります。そして、それは実際にそうでした。上記の説明に関して問題のあるXMLファイルの1つは、質問の更新として@Mickにも含まれていました。

1
Zollie