2014-03-01 48 views
0

我想通過Get方法的參數發送給一個Joomla組件如何正確地將參數傳遞給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= 

有沒有辦法解決這個問題?

回答

3

使用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​​,這樣您就不必從頭開始寫東西了。

相關問題