【发布时间】:2018-06-14 15:19:29
【问题描述】:
我正在尝试从我在项目中执行的所有查询中获取所有错误,并将这些错误重定向到一个名为“error”的控制器,该控制器将按照我的意愿处理这些错误。当我通过 GET 重定向函数生成的 url 中的所有信息时,问题看起来像。
我想如果这个信息是通过 POST 发送的,这个问题就会消失,但我显然没有在控制器内使用任何形式。那么,我如何对重定向函数说这些信息不应该与 url 一起使用,而应该通过 POST 传递?
我想做什么可能吗?
内部控制器:
try {
$results = $queries->aQuery();
} catch (ErrorException $errorException) {
return $this->redirect($errorException->redirectResponse);
}
服务查询内部:
public function aQuery(){
$query="SELECT * FROM blabla ...";
try {
$stmt = $this->DB->->prepararQuery($query);
$stmt->execute();
$results = $stmt->fetchAll();
} catch (DBALException $DBALException) {
$errorException = new ErrorException($this->router->generate('error',
[
'errorQuery' => $query,
'errorData' => "0 => '".$data1."', 1 ....",
'errorOrigin' => 'a place',
'errorResponseText' => $DBALException->getMessage()
]
));
throw $errorException;
}
}
错误异常:
class ErrorException extends \Exception
{
/**
* @var \Symfony\Component\HttpFoundation\RedirectResponse
*/
public $redirectResponse;
/**
* ErrorException constructor.
* @param \Symfony\Component\HttpFoundation\RedirectResponse $redirectResponse
*/
public function __construct(string $redirectResponse)
{
$this->redirectResponse = $redirectResponse;
}
}
【问题讨论】:
-
据我所知,重定向到 POST 是不可能的。您是使用 url 中的属性(
errorQuery、errorData等...)作为 url 组件(如/{errorQuery}/{errorData})还是将它们作为 QueryString(?errorQuery=..&errorData=...)传递。如果将它们作为 url-components 传递,是否可以将它们从 url 中删除,以便在查询字符串中提供它们?这实际上可能会奏效。 -
blablabla.com/app_dev.php/es/error?errorQuery=%0A%20%20%20%20%20%20%20 SELECT%0A%20%20%20%2。 ......我已经这样做了......无论如何,谢谢你。这是一个很好的尝试。
-
您可以将这些值存储在会话中
标签: symfony redirect post controller