如何正确地将参数传递给 joomla 组件?

Posted

技术标签:

【中文标题】如何正确地将参数传递给 joomla 组件?【英文标题】:how can I pass parameters to joomla component correctly? 【发布时间】:2014-04-02 14:15:33 【问题描述】:

我想通过Get方法向joomla组件发送参数

这是网址:

index.php?option=com_bahaedini&search=keyword&view=items&year=yyyy&month=mm&&day=dd

例如:

index.php?option=com_bahaedini&search=ebooks&view=items&year=2000&month=1&&day=20

这是 ParseRoute 函数:

function BahaediniParseRoute($segments)

       $vars = array();


       switch($segments[0])
       

               case 'items':
                       $vars['view'] = 'items';

                       if(isset($segments[2]))
                       
                       $year = explode( ':', $segments[2] );
                       $vars['year'] =  (int)$year[0];
                       

                       if(isset($segments[3]))
                       
                       $month = explode( ':', $segments[3] );
                       $vars['month'] = (int)$month[0]; 
                       

                       if(isset($segments[4]))
                       
                       $day = explode( ':', $segments[4] );
                       $vars['day'] = (int)$day[0]; 
                       

                       if(isset($segments[1]))
                       
                       $search = explode( ':', $segments[1] );
                       $vars['search'] = (int)$search[0]; 
                       

                       break; 


       
       return $vars;

通常 URL 更改为:

http://127.0.0.1/component/bahaedini/items/ebooks/1395/1/8

我用这种方法打印它们:

echo "<br>s:".$_ss          = urldecode($app->input->getString('search'));
echo "<br>y:".$_yy          = urldecode($app->input->getString('year'));
echo "<br>m:".$_mm          = urldecode($app->input->getString('month'));
echo "<br>d:".$_dd          = urldecode($app->input->getString('day'));

结果:

ss=ebook/yy=2000/mm=1/dd=8

一切正常,直到: 如果我删除关键字,结果如下:

ss=2000/yy=1/mm=8/dd=

有没有办法解决这个问题?

【问题讨论】:

【参考方案1】:

使用 JInput,它是用于管理请求的 API。使用 JInput 从 url 获取任何内容非常简单。 http://docs.joomla.org/Retrieving_request_data_using_JInput.

$jinput = JFactory::getApplication()->input;
$year = $jinput->getInteger('year'); // not sure why you have year as a string
$keyword = $jinput->getString('keyword');

如果您使用的是 Joomla,重点是使用 API,这样您就不必从头开始编写。

【讨论】:

以上是关于如何正确地将参数传递给 joomla 组件?的主要内容,如果未能解决你的问题,请参考以下文章

如何正确地将参数传递给 Django 中的基于类的视图实例?

如何正确地将参数传递给基于类的视图测试 Django Rest Framework?

Joomla 2.5:将参数传递给联系表格

如何最好地将 CString 转换为 BSTR 以将其作为“in”参数传递给 COM 方法?

如何有条件地将参数传递给 Flutter/Dart 中的 Widget?

如何迭代地将参数传递给 R 函数