web-dev-qa-db-fra.com

Comment exécuter une requête dans un sous-contrôleur Joomla 3x

J'ai un composant simple qui effectuera CRUD pour mon application mobile sur le site Joomla.

Voici la structure de mes fichiers

http://localhost/chichi-server/components/com_chichi/controller.php
http://localhost/chichi-server/components/com_chichi/chichi.php
http://localhost/chichi-server/components/com_chichi/controllers/getdata.php
http://localhost/chichi-server/components/com_chichi/controllers/postdata.php

dans mon chichi.php j'ai ce

<?php
  defined('_JEXEC') or die('access dedied');
  jimport('joomla.application.component.controller');
  $input = JFactory::getApplication()->input;
  $controller=JControllerLegacy::getInstance('ChichiMobilePost');
  $controller->execute($input->get('task'));
  $controller->redirect();

Et dans controller.php j'ai

<?php
   defined('_JEXEC') or die('access dedied');
   jimport('joomla.application.component.controller');

   class ChichiMobilePostController extends JControllerLegacy{  
          function diplay(){
                echo 'Noting to do';    
              }

          function create(){
                echo 'Welcom to Create';    
              }
     }

Dans mon /controllers/getdata.php

<?php
 defined('_JEXEC') or die('access dedied');
 jimport('joomla.application.component.controller');

class ChichiMobilePostController extends JControllerLegacy{
//GET USER COLLECTIONS  
  function getcollection(){
    //Prevent template from showing
    $app =JFactory::getApplication();
    $input = JFactory::getApplication()->input;
    $userID = $input->post->get('userID');
    $db = JFactory::getDbo();
    // Create a new query object.
    $query = $db->getQuery(true);
    try
        {   
            $query
                ->select(array('*'))
                ->from($db->quoteName('#__user'))   
                ->where($db->quoteName('id') .'=' . $userID .'');
            $db->setQuery($query);
            $results = $db->loadAssocList();    
        }
    catch (Exception $e)
        {
            $this->setError('The error message you want');
            return false;
        }   
            echo json_encode(array('collect'=>$results));
            $app->close();
   }        
};

Ma question comment puis-je interroger dans/controllers/getdata/php pour s'exécuter

J'ai essayé d'y accéder par

 http://localhost/chichi-server/index.php?option=com_chichi&task=getdata.getcollection

Mais j’obtiens cette erreur "(Affichage non trouvé [nom, type, préfixe]: get.getcollection, html, chichimobilepostView)" "

Cependant si j'utilise

     http://localhost/chichi-server/index.php?option=com_chichi&task=create

le controller.php est capable de produire "Welcome to create"

la raison pour laquelle je le fais est parce qu’il y aura beaucoup de publications et de demandes de l’application mobile et que je pourrais traiter chacune dans son propre fichier.

Je serai heureux si quelqu'un peut aider. moi résoudre ceci, merci beaucoup

1
David Addoteye

Essayez de renommer votre classe dans /controllers/getdata.php en: ChichiMobilePostController Getdata Alors Joomla peut trouver la bonne classe et exécuter getcollection () si vous l'appelez via

http://localhost/chichi-server/index.php?option=com_chichi&task=getdata.getcollection
3
fruppel