根据 url 中的状态在 joomla 中分配任务


Based on status in url to assign task in joomla

我有这个网址(网址的一部分):索引.php?选项=com_umpai&状态=成功

当状态=成功传递给组件时,我希望它运行成功任务。所以我创建了一个路由器php文件来获取状态并放入任务。不确定这是否是正确的方法?如何通过在 url 中获取状态来放入任务?

我想知道路由器.php是否适用于地址栏中的 url 类型?

这是我的路由器代码:

<?php 
 defined('_JEXEC') or die('Restricted access');
 function UmpaiBuildRoute(&$query)
{
$segments = array();
if(isset($query['status']))
{
    switch($query['status']) {
        case 'success':
            $segments[] = 'success'; 
        case 'fail':
            $segments[] = 'fail';
        case 'cancel':
            $segments[] = 'cancel';
    }
    $segments[] = $query['task'];
    unset($query['task']);
    unset($query['status']);
}
return $router->build($segments);
}
function UmpaiParseRoute($segments)
{
    $vars = array();
   $count = count($segments);
   if(!empty($count)) {
     if($segments[0] == 'success'){
        $vars['task'] = 'success';
        }
  }
   return $router->parse($vars);
  }

这是测试我的路由器是否正常工作的简单代码版本,但它也不工作:

 function UmpaiBuildRoute(&$query)
{
    $segments = array();
    $segments[] = 'success';
    return $segments;
}
function UmpaiParseRoute($segments)
{
    $vars = array();
    $count = count($segments);
   if(!empty($count)) {
      if($segments[0] == 'success'){
         $vars['task'] = 'success';
     }
}
   return $vars;
   var_dump($vars);
}

我也试过这个:

function UmpaiBuildRoute(&$query)
{
   $segments[] = $_GET['status'];
}
function UmpaiParseRoute($segments)
{
   $vars = array();
   $count = count($segments);
   if(!empty($count)) {
     if($segments[0] == 'success'){
         $vars['task'] = 'success';
     }
} 
  return $vars;
}

Verhaeren(在问题的评论中)是对的,请尝试以下操作:

if(!empty($_GET['status'])) {
  // if status is set:
  switch($_GET['status']) {
    case 'success':
        $segments[] = 'success'; 
    case 'fail':
        $segments[] = 'fail';
    case 'cancel':
        $segments[] = 'cancel';
  }
} else {
  // if status is not set...
};

注意:除了此开关,您还可以使用$segments[] = $_GET['status'];

$_GET是一个

数组,$_GET['status']是一个字符串。 $_GET是一个包含所有 URL 变量(如果有)的数组。

function UmpaiParseRoute()
{
   $vars = array();
   if(isset($_GET['status'])) {
        $vars['task'] = 'success';
   }
  return $vars;
}

另请注意,您不需要将$_GET作为参数传递,因为它是一个超全局变量