【问题标题】:getting the instance of controllers Joomla获取控制器 Joomla 的实例
【发布时间】:2013-08-20 03:10:24
【问题描述】:

所以我尝试创建我的第一个组件,为此我创建了以下控制器:

    <?php
defined('_JEXEC') or die ('Access denied!');
/**
 * Created by JetBrains PhpStorm.
 * User: Marc
 * Date: 18-08-13
 * Time: 02:18
 * To change this template use File | Settings | File Templates.
 */
jimport( 'joomla.application.component.controller' );
class MyCompController implements  JController{

    function create(){
        echo "Welcome to create";
    }

    function delete (){
        $id =JRequest::getVar('id');
        echo "you want to delete "-$id;
    }

}

现在我对 joomla 不是很熟悉,只能在哪里找到 2.5 的文档

$controller = JController::getInstance('MyComp');

是获取控制器实例的相关方式。

我查看了界面,JController interface 没有提供 getInstance 方法,因为我尝试过:

$controller = JController::getApplication('MyComp');

但没有运气。

那么如何获得控制器呢?

【问题讨论】:

    标签: php joomla


    【解决方案1】:

    您的组件有一个与您的组件同名的引导脚本。在你的情况下,那将是mycomp.php。每当出现带有option=mycomp 的请求时,Joomla 都会包含该文件。在那里你设置并调用你的控制器:

    $controller = new MyCompController;
    $controller->execute(JFactory::getApplication()->input->getCmd('task'));
    $controller->redirect();
    

    【讨论】:

      【解决方案2】:

      我不确定您要完成什么。但我认为您需要的是 Joomla 2.5 tutorial

      您需要有一个名为 MyComp.php 的文件,就像他们在上面的链接中定义的 HelloWorld.php 一样。

      就是这样。然后当你用一些代码创建一个视图时,说一个表单:

      <form action='index.php?option=com_MyComp&task=delete'>
      ....
      </form>
      

      这将访问控制器的删除功能代码。

      另一方面,使用Component Creator 创建组件所需的模板可能更容易。构建模板的不错的免费在线工具,所有孩子都使用它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-19
        • 1970-01-01
        • 1970-01-01
        • 2012-12-02
        相关资源
        最近更新 更多