joomla 组件不调用任何模型函数和控制器函数

Posted

技术标签:

【中文标题】joomla 组件不调用任何模型函数和控制器函数【英文标题】:joomla component not calling any model function and controller function 【发布时间】:2016-06-09 11:49:37 【问题描述】:

我在函数中发送一个 ajax 请求并调用模型函数,但模型函数没有调用,我也尝试了一个本地控制器函数,但没有调用任何本地函数

控制器

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

    class IgalleryController extends JControllerLegacy
    
        function __construct($config = array())
           
            $config['base_path'] = JPATH_SITE.'/components/com_igallery';
            parent::__construct($config);
        

        function ajaxrequest()
        
            //JModelLegacy::addIncludePath(JPATH_SITE . '/components/com_igallery/models', 'category');

            //echo $db = JFactory::getDBO();
            $model             = $this->getModel('category');
            $this->params      = JComponentHelper::getParams('com_igallery');
            $this->source      = JRequest::getCmd('igsource', 'component');
            //
            $igid              = JFactory::getApplication()->input->get('igid');
            $Itemid            = JFactory::getApplication()->input->get('Itemid');
            $this->catid       = JRequest::getInt('igid', 0);
            $this->category    = $model->getCategory($this->catid);
            $profileId         = JRequest::getInt('igpid', 0);
            $profileId         = $profileId == 0 ? $this->category->profile : $profileId;
            $user              = JFactory::getUser();
            //print_r($user); die;
            $this->profile     = $model->getProfile($profileId);

            $searchChildren    = JRequest::getInt('igchild', 0);
            $tags              = JRequest::getVar('igtags', '');
            //
            $limit             = JRequest::getInt('iglimit', 0);
            $limit             = $limit == 0 ? 1000 : $limit;
            $foo               = $this->foo();
            print_r($foo);
            $this->photoList = $model->getCategoryImagesList($this->profile, $this->catid, $tags,    $searchChildren, $limit);
            //
            print_r($this->photoList);
        

        function $this->foo()    
        
            return true; 
           
    ...

在上面的代码中也打印 $foo 变量但没有得到 true 或 1 值;

【问题讨论】:

【参考方案1】:

您必须在控制器中覆盖函数 getModel() 父模型有构造:

public function getModel($name = '', $prefix = '', $config = array('ignore_request' =&gt; true))

您缺少 $prefix,如果需要,您还添加了模型文件的包含路径

关于问题返回值真假,你必须回显1为真,0为假,并通过die函数停止进程。返回方法会显示很多joomla页面的html

function $this->foo()    
    
       echo 1;
       die;
      

【讨论】:

以上是关于joomla 组件不调用任何模型函数和控制器函数的主要内容,如果未能解决你的问题,请参考以下文章

Joomla、Falang 集成组件...致命错误:在 null 上调用成员函数 getTable()

在 joomla 组件中,我应该在哪里存储数据库函数,以及如何调用它们?

Joomla 3.0 一个具有多个视图的组件

如何在自定义模块(Joomla 1.7)中使用自定义组件中的函数?

从模型到视图的 Joomla 组件数据

Joomla 3.0一个具有多个视图的组件