web-dev-qa-db-fra.com

Certains éléments du menu SimpleCRM échouent avec une erreur: appel à une fonction membre getModel () sur null

Immédiatement après la mise à niveau de ma version Joomla de 3.9.1 à 3.9.4, je ne peux plus accéder à certains sous-menus Simple CRM dans le backend.

enter image description here

Le lien Codes d'entreprise fonctionne correctement.
(http://localhost/jdem02/administrator/index.php?option=com_gscrm&view=Codes)

Les éléments suivants ne le font pas:

  • CRM simple
    (http://localhost/jdem02/administrator/index.php?option=com_gscm)

  • Gestion des utilisateurs
    (http://localhost/jdem02/administrator/index.php?option=com_gscrm&view=Beads)

  • Rôles d'utilisateur
    (http://localhost/jdem02/administrator/index.php?option=com_gscrm&view=Roles)

  • Devises et taux
    (http://localhost/jdem02/administrator/index.php?option=com_gscrm&view=Currencies)

Ils génèrent tous la même erreur:

0 Appel à une fonction membre getModel () sur null
C:\wamp64\www\jdem02\bibliothèques\fof30\Form\Field\Numeric.php: 25

Alors qui a déplacé mon fromage?

Comment puis-je réparer ça?

p.s. Je ne suis pas intéressé par baisse de ma version de Joomla .


Mettre à jour:

C'est mon administrator/components/com_gscrm/View structure du répertoire:

enter image description here

Voici le script Roles 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

Cette question (problème) a été résolue avec succès et assez rapidement hier , en travaillant efficacement avec @Mick sur la solution. Et cette question est très bien détaillée, bien décrite et elle comprenait le message d'erreur exact de Joomla, c'est donc un bon exemple d'une question bien construite sur SE.

La solution était relativement simple: nous avons dû changer le type numérique déconseillé champ de formulaire à type de numéro champ de formulaire dans les fichiers XML où ces champs sont également définis dans Joomla et dans FOF.

Dans les définitions de champ de formulaire à l'aide de type=”number” au lieu de type=”numeric” a résolu le problème assez simplement.

Brève description du problème et de la solution:

Le message d'erreur affiche deux choses importantes: 1. dans quel fichier l'erreur s'est produite (sur quelle ligne exactement) 2 . Et il est également devenu évident que le composant est construit en utilisant FOF (Framework on Framework), avec des classes trouvées dans la bibliothèque fof30 dans Joomla 3.

Lorsque nous ouvrons le fichier particulier remarqué dans le message d'erreur, nous constatons que ce fichier concernerait la construction d'un champ de formulaire et nous pouvons également voir immédiatement que le champ est obsolète avec un message:

Champ de compatibilité descendante. NE PAS UTILISER DANS PHP 7.2 ET PLUS TARD.

Et avec une note supplémentaire: @ obsolète 3.1

Si vous vérifiez ensuite la bibliothèque fof30, vous constaterez que le numéro de version de fof est maintenant: 3.4.2.

Enfin, nous pouvons également trouver un message très utile dans le fichier, grâce au créateur de FOF: “… Utilisez le type de champ numérique à la place. "

Ainsi, dans cette classe de champ numérique, le champ ne peut pas être construit, mais si vous modifiez le type de champ de formulaire en number dans les fichiers XML correspondants où le formulaire et les champs sont construits, le problème doit être résolu. Et c'était vraiment le cas. L'un des fichiers XML problématiques concernant l'explication ci-dessus a également été inclus par @Mick en tant que mise à jour de la question.

1
Zollie