【问题标题】:How to redirect to some url and also return value to caller function?如何重定向到某个 url 并将值返回给调用者函数?
【发布时间】:2012-01-11 14:07:11
【问题描述】:

我正在用 PHP 开发一个 joomla MVC 组件。 我需要在我的组件代码中的 model.php 之一中执行以下功能 1) 和 2)。

function xyz()
{
 //blah blah
 //1) I have to redirect
 $mainframe->redirect( 'index.php?option=com_abc','');
 //2) and also return value to caller function 
 return $row; 
}

我如何做到这一点?

谢谢:)

【问题讨论】:

  • 有什么目的?当您重定向时,您通常会结束当前请求,那么为什么需要返回一个值?
  • 这就是我需要的;我想让这个函数返回一个值,同时我也想调用其他将通过重定向到url来执行的任务。
  • 应该将用户重定向到该页面还是只想触发该请求?
  • 只需触发该请求。用户停留在相同的网址。
  • 然后只需使用 file_get_contents 或 curl 来触发请求或使用像 Gearman 这样的作业队列

标签: php model-view-controller redirect joomla return-value


【解决方案1】:

通常,在 MVC 方法中,模型不应该重定向用户,这是在控制器上完成的。在控制器上,您可以:

$this->setRedirect($url, $optional_message);

// some more code to be executed

这样,用户将在当前控制器的操作完成后重定向,而不是在您调用 setRedirect 方法时重定向

但如果您确实需要在模型上执行此操作,您可以将控制器作为参数传递给模型的函数,并从那里设置重定向并返回值:

<?php
function xyz($controller)
{

    $controller->setRedirect( 'index.php?option=com_abc','');

    return $row; 
}
?>

然后,在您的控制器中:

$model->xyz($this);

【讨论】:

  • 您好@guilleva,我尝试了您建议的方式,但没有成功。我将重定向移动到控制器。但是在控制器中只会执行一个重定向。
猜你喜欢
  • 2011-07-26
  • 1970-01-01
  • 1970-01-01
  • 2010-11-16
  • 1970-01-01
  • 1970-01-01
  • 2021-10-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多