Fatal error: Call to a member function getKeyName()

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [Problème] Fatal error: Call to a member function getKeyName()

    Bonsoir j’ai un problème dans joomla 2.5 aux niveaux main Menu quand je click pour ajouté un lien de menu ou pour modifie un menu il affiche une erreur
    « Fatal error: Call to a member function getKeyName() on a non-object in /home/a2478649/public_html/libraries/joomla/application/component/controllerform.php on line 393 »

    Est ce quelqu’un peut m’aidé
    Voici mon fichier controllerform.php
    Code PHP:
    // Guess the list view as the plural of the item view.
            
    if (empty($this->view_list))
            {
                
    // @TODO Probably worth moving to an inflector class based on
                // http://kuwamoto.org/2007/12/17/improved-pluralizing-in-php-actionscript-and-ror/

                // Simple pluralisation based on public domain snippet by Paul Osman
                // For more complex types, just manually set the variable in your class.
                
    $plural = array(
                    array(
    '/(x|ch|ss|sh)$/i'"$1es"),
                    array(
    '/([^aeiouy]|qu)y$/i'"$1ies"),
                    array(
    '/([^aeiouy]|qu)ies$/i'"$1y"),
                    array(
    '/(bu)s$/i'"$1ses"),
                    array(
    '/s$/i'"s"),
                    array(
    '/$/'"s"));

                
    // Check for matches using regular expressions
                
    foreach ($plural as $pattern)
                {
                    if (
    preg_match($pattern[0], $this->view_item))
                    {
                        
    $this->view_list preg_replace($pattern[0], $pattern[1], $this->view_item);
                        break;
                    }
                }
            }

            
    // Apply, Save & New, and Save As copy should be standard on forms.
            
    $this->registerTask('apply''save');
            
    $this->registerTask('save2new''save');
            
    $this->registerTask('save2copy''save');
        }

        
    /**
         * Method to add a new record.
         *
         * @return  mixed  True if the record can be added, a JError object if not.
         *
         * @since   11.1
         */
        
    public function add()
        {
            
    // Initialise variables.
            
    $app JFactory::getApplication();
            
    $context "$this->option.edit.$this->context";

            
    // Access check.
            
    if (!$this->allowAdd())
            {
                
    // Set the internal error and also the redirect error.
                
    $this->setError(JText::_('JLIB_APPLICATION_ERROR_CREATE_RECORD_NOT_PERMITTED'));
                
    $this->setMessage($this->getError(), 'error');

                
    $this->setRedirect(
                    
    JRoute::_(
                        
    'index.php?option=' $this->option '&view=' $this->view_list
                        
    $this->getRedirectToListAppend(), false
                    
    )
                );

                return 
    false;
            }

            
    // Clear the record edit information from the session.
            
    $app->setUserState($context '.data'null);

            
    // Redirect to the edit screen.
            
    $this->setRedirect(
                
    JRoute::_(
                    
    'index.php?option=' $this->option '&view=' $this->view_item
                    
    $this->getRedirectToItemAppend(), false
                
    )
            );

            return 
    true;
        }

        
    /**
         * Method to check if you can add a new record.
         *
         * Extended classes can override this if necessary.
         *
         * @param   array  $data  An array of input data.
         *
         * @return  boolean
         *
         * @since   11.1
         */
        
    protected function allowAdd($data = array())
        {
            
    $user JFactory::getUser();
            return (
    $user->authorise('core.create'$this->option) || count($user->getAuthorisedCategories($this->option'core.create')));
        }

        
    /**
         * Method to check if you can add a new record.
         *
         * Extended classes can override this if necessary.
         *
         * @param   array   $data  An array of input data.
         * @param   string  $key   The name of the key for the primary key; default is id.
         *
         * @return  boolean
         *
         * @since   11.1
         */
        
    protected function allowEdit($data = array(), $key 'id')
        {
            return 
    JFactory::getUser()->authorise('core.edit'$this->option);
        }

        
    /**
         * Method to check if you can save a new or existing record.
         *
         * Extended classes can override this if necessary.
         *
         * @param   array   $data  An array of input data.
         * @param   string  $key   The name of the key for the primary key.
         *
         * @return  boolean
         *
         * @since   11.1
         */
        
    protected function allowSave($data$key 'id')
        {
            
    // Initialise variables.
            
    $recordId = isset($data[$key]) ? $data[$key] : '0';

            if (
    $recordId)
            {
                return 
    $this->allowEdit($data$key);
            }
            else
            {
                return 
    $this->allowAdd($data);
            }
        }

        
    /**
         * Method to run batch operations.
         *
         * @param   JModel  $model  The model of the component being processed.
         *
         * @return    boolean     True if successful, false otherwise and internal error is set.
         *
         * @since    11.1
         */
        
    public function batch($model)
        {
            
    // Initialise variables.
            
    $input    JFactory::getApplication()->input;
            
    $vars    $input->post->get('batch', array(), 'array');
            
    $cid    $input->post->get('cid', array(), 'array');

            
    // Build an array of item contexts to check
            
    $contexts = array();
            foreach (
    $cid as $id)
            {
                
    // If we're coming from com_categories, we need to use extension vs. option
                
    if (isset($this->extension))
                {
                    
    $option $this->extension;
                }
                else
                {
                    
    $option $this->option;
                }
                
    $contexts[$id] = $option '.' $this->context '.' $id;
            }

            
    // Attempt to run the batch operation.
            
    if ($model->batch($vars$cid$contexts))
            {
                
    $this->setMessage(JText::_('JLIB_APPLICATION_SUCCESS_BATCH'));

                return 
    true;
            }
            else
            {
                
    $this->setMessage(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_FAILED'$model->getError()));
                return 
    false;
            }
        }

        
    /**
         * Method to cancel an edit.
         *
         * @param   string  $key  The name of the primary key of the URL variable.
         *
         * @return  boolean  True if access level checks pass, false otherwise.
         *
         * @since   11.1
         */
        
    public function cancel($key null)
        {
            
    JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN'));

            
    // Initialise variables.
            
    $app JFactory::getApplication();
            
    $model $this->getModel();
            
    $table $model->getTable();
            
    $checkin property_exists($table'checked_out');
            
    $context "$this->option.edit.$this->context";

            if (empty(
    $key))
            {
                
    $key $table->getKeyName();
            }

            
    $recordId JRequest::getInt($key);

            
    // Attempt to check-in the current record.
            
    if ($recordId)
            {
                
    // Check we are holding the id in the edit list.
                
    if (!$this->checkEditId($context$recordId))
                {
                    
    // Somehow the person just went to the form - we don't allow that.
                    
    $this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_UNHELD_ID'$recordId));
                    
    $this->setMessage($this->getError(), 'error');

                    
    $this->setRedirect(
                        
    JRoute::_(
                            
    'index.php?option=' $this->option '&view=' $this->view_list
                            
    $this->getRedirectToListAppend(), false
                        
    )
                    );

                    return 
    false;
                }

                if (
    $checkin)
                {
                    if (
    $model->checkin($recordId) === false)
                    {
                        
    // Check-in failed, go back to the record and display a notice.
                        
    $this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_CHECKIN_FAILED'$model->getError()));
                        
    $this->setMessage($this->getError(), 'error');

                        
    $this->setRedirect(
                            
    JRoute::_(
                                
    'index.php?option=' $this->option '&view=' $this->view_item
                                
    $this->getRedirectToItemAppend($recordId$key), false
                            
    )
                        );

                        return 
    false;
                    }
                }
            }

            
    // Clean the session data and redirect.
            
    $this->releaseEditId($context$recordId);
            
    $app->setUserState($context '.data'null);

            
    $this->setRedirect(
                
    JRoute::_(
                    
    'index.php?option=' $this->option '&view=' $this->view_list
                    
    $this->getRedirectToListAppend(), false
                
    )
            );

            return 
    true;
        }

        
    /**
         * Method to edit an existing record.
         *
         * @param   string  $key     The name of the primary key of the URL variable.
         * @param   string  $urlVar  The name of the URL variable if different from the primary key
         * (sometimes required to avoid router collisions).
         *
         * @return  boolean  True if access level check and checkout passes, false otherwise.
         *
         * @since   11.1
         */
        
    public function edit($key null$urlVar null)
        {
            
    // Initialise variables.
            
    $app JFactory::getApplication();
            
    $model $this->getModel();
            
    $table $model->getTable();
            
    $cid JRequest::getVar('cid', array(), 'post''array');
            
    $context "$this->option.edit.$this->context";

            
    // Determine the name of the primary key for the data.
            
    if (empty($key))
            {
                
    $key $table->getKeyName();
            }

            
    // To avoid data collisions the urlVar may be different from the primary key.
            
    if (empty($urlVar))
            {
                
    $urlVar $key;
            }

            
    // Get the previous record id (if any) and the current record id.
            
    $recordId = (int) (count($cid) ? $cid[0] : JRequest::getInt($urlVar));
            
    $checkin property_exists($table'checked_out');

            
    // Access check.
            
    if (!$this->allowEdit(array($key => $recordId), $key))
            {
                
    $this->setError(JText::_('JLIB_APPLICATION_ERROR_EDIT_NOT_PERMITTED'));
                
    $this->setMessage($this->getError(), 'error');

                
    $this->setRedirect(
                    
    JRoute::_(
                        
    'index.php?option=' $this->option '&view=' $this->view_list
                        
    $this->getRedirectToListAppend(), false
                    
    )
                );

                return 
    false;
            }

            
    // Attempt to check-out the new record for editing and redirect.
            
    if ($checkin && !$model->checkout($recordId))
            {
                
    // Check-out failed, display a notice but allow the user to see the record.
                
    $this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_CHECKOUT_FAILED'$model->getError()));
                
    $this->setMessage($this->getError(), 'error');

                
    $this->setRedirect(
                    
    JRoute::_(
                        
    'index.php?option=' $this->option '&view=' $this->view_item
                        
    $this->getRedirectToItemAppend($recordId$urlVar), false
                    
    )
                );

                return 
    false

  • #2
    Re : Fatal error: Call to a member function getKeyName()

    Bonsoir,

    Ce genre d'erreur peut être provoquée par une extension bancale ou mal installé, il faut chercher de ce côté là.

    Commentaire


    • #3
      Re : Fatal error: Call to a member function getKeyName()

      Apparemment ça mais comment je peux connaitre cette extension ?
      Est ce que peut trier par date d’installé pour je que peux désinstallé

      Commentaire


      • #4
        Re : Fatal error: Call to a member function getKeyName()

        Apparemment ça mais comment je peux connaitre cette extension ?
        Toi seul sait ce que tu as installé sur ton site comme composants, modules, plugins etc. en sus de ce de Joomla de base.

        Commentaire


        • #5
          Re : Fatal error: Call to a member function getKeyName()

          Envoyé par zepelin57 Voir le message
          Toi seul sait ce que tu as installé sur ton site comme composants, modules, plugins etc. en sus de ce de Joomla de base.
          Merci pour ta reponce je vais voire

          Commentaire


          • #6
            Re : Fatal error: Call to a member function getKeyName()

            Bonjour

            Envoyé par bigbos120 Voir le message
            Est ce que peut trier par date d’installé pour je que peux désinstallé
            En cliquant sur la colonne ID, tu peux trier sur cette colonne et opère un tri descendant (le ID le plus haut en premier). Ce faisant, tu tries donc de l'extension la plus récente à la plus ancienne.
            Christophe (cavo789)
            Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be
            Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)​

            Commentaire

            Annonce

            Réduire
            Aucune annonce pour le moment.

            Partenaire de l'association

            Réduire

            Hébergeur Web PlanetHoster
            Travaille ...
            X