2014-02-19 36 views
0

我試圖在我的Joomla應用程序中實現task獲取參數,但它很難,因爲我剛剛在com_(name)/(viewname)中找到了控制器, .php根本不使用。com_(name)/somecontroller.php中沒有使用控制器

例如;我有以下網址:

/index.php?option=com_mymodule &視圖=遊戲&格式=文本&任務= savescore &佈局= savegamesresult & ID = 1216

它工作正常,但參數task可能以及不在那裏,文件/public_html/components/com_mymodule/controllers/game.php也可能不在那裏。我正在嘗試爲特定任務使用特定模型,但由於Joomla忽略了控制器,所以很難。

這是game.php控制器的內容:

<?php 
// No direct access to this file 
defined('_JEXEC') or die('Restricted access'); 

// import Joomla controller library 
jimport('joomla.application.component.controller'); 

class mymoduleControllergame extends JController 
    function __construct() 
      { 
       parent::__construct(); 
       $this->registerTask('savescore'); 
      } 
    function display($tpl=null) 
     { 
      JRequest::setVar('view','nonexistingonethatshouldgivemeanerror'); 
      $model=$this->getModel('game'); 
      $view = $this->getView(); 
      $view->setModel($model,true); 
      parent::display($tpl); 
     } 
    function savescore(){ 
     JRequest::setVar('view','game'); 
     $model=$this->getModel('anothermodel'); 
     $view = $this->getView(); 
     $view->setModel($model,true); 
     parent::display($tpl); 
    } 
} 

打開網址給我使用的是默認的模式,沒有錯誤,沒有任務被稱爲遊戲的看法。不知怎的,控制器沒有拿起。模型和視圖中使用基於命名約定我以爲,我以爲,這種控制器也是如此,但也許我缺少的URL參數,將指定哪些控制器任務使用,因爲該控制器可以設置瞭解要使用的視圖和佈局(如果未提供)。

我使用Joomla 1.5

回答

0

在/public_html/components/mycomponent/mycomponent.php我說:

if($controller = JRequest::getVar('controller')) 
{ 
require_once(JPATH_COMPONENT.DS.'controllers'.DS.$controller.'.php'); 
} 
else 
{ 
require_once(JPATH_COMPONENT.DS.'controller.php'); 
} 
$classname = 'mycomponentController'.$controller; 
$controller = new $classname(JRequest::getVar('task', '')); 
$controller->execute(JRequest::getVar('task', '')); 
$controller->redirect(); 

不得不改變/public_html/components/com_mycomponent/controllers/game.php一個小到:

<?php 
// No direct access to this file 
defined('_JEXEC') or die('Restricted access'); 
// import Joomla controller library 
jimport('joomla.application.component.controller'); 
class mycomponentControllerfame extends JController{ 
    function __construct() 
      { 
       parent::__construct(); 
       $this->registerTask('savescore','savescore'); 
      } 
    function display($tpl=null) 
     { 
      JRequest::setVar('view','game'); 
      $model=$this->getModel('game'); 
      $view = $this->getView('game','text'); 
      $view->setModel($model,true); 
      parent::display($tpl); 
     } 
    function savescore(){ 
     JRequest::setVar('view','game'); 
     JRequest::setVar('model','tournament'); 
     $model=$this->getModel('tournament'); 
     $view = $this->getView('game','text'); 
     $view->setModel($model,true); 
     $view->setLayout('savegamesresult'); 
     $view->display(); 
    } 
} 

它正在執行savescore並使用正確的模型,視圖和佈局。