我一直在关注文档here,以便为现有组件添加(改进的)文件上传部分。
上面示例中的链接到控制器/模型然后处理上传是通过post params形成的:
post_params:
{
"option" : "com_mycomponent",
"controller" : "mycontroller",
"task" : "mytask",
"id" : "'.$myItemObject->id.'",
"'.$session->getName().'" : "'.$session->getId().'",
"format" : "raw"
},
我的问题是使用Joomla 2.5中引入的新控制器方法上传无效:
// Get an instance of the controller prefixed by the component
$controller = JController::getInstance('mycomponent');
// Perform the Request task
$controller->execute(JRequest::getCmd('task'));
// Redirect if set by the controller
$controller->redirect();
这对于加载控制器的旧1.5方法确实可以正常工作(事实上在Joomla 2.5上):
// Create the controller
$classname = 'mycomponentController'.$controller;
$controller = new $classname( );
// Perform the Request task
$controller->execute( JRequest::getVar('task'));
// Redirect if set by the controller
$controller->redirect();
虽然后一种方法与Joomla 2.5兼容,但遗憾的是我希望将其与之集成的组件使用更新的方法,我宁愿不改变它,因此我可以根据需要不断更新组件,而无需每次都更改它。此外,如果我改变它,我猜我可能会失去现有的功能。
基本上我想知道如何设置post params以便正确调用新的控制器方法!
修改
此后我尝试使用post param配置:
post_params:
{
"option" : "com_mycomponent",
"task" : "mycontroller.mytask",
"id" : "'.$myItemObject->id.'",
"'.$session->getName().'" : "'.$session->getId().'",
"format" : "raw"
},
我试图模仿index.php?option=com_mycomponent&task=mycontroller.mytask
等行的链接。但这仍然不起作用
答案 0 :(得分:1)
您需要在index.php中定义以下变量
define('_JREQUEST_NO_CLEAN', 1);
我正在寻找原因,我发现了 - http://docs.joomla.org/Framework_Compatibility
注意 - 如果这不起作用,请删除"format" : "raw"
。
如果它不起作用,请告诉我。