Joomlaのバージョンを3.9.1から3.9.4にアップグレードした直後に、バックエンドの特定のSimple CRMサブメニューにアクセスできなくなりました。
会社コードのリンクは正しく機能します。
(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
ディレクトリ構造:
次に、ロール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&view=Role&id=[ITEM:ID]&[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>
この質問(問題)は、昨日成功し、かなり迅速に解決され、ソリューションで@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にも含まれていました。