我有这个网址(网址的一部分):索引.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
作为参数传递,因为它是一个超全局变量。