Php Symfony2无返回重定向路由
重定向路由必须由控制器操作返回才能工作。例如:Php Symfony2无返回重定向路由,php,symfony,Php,Symfony,重定向路由必须由控制器操作返回才能工作。例如: function testAction() { return $this->redirectToRoute('homepage'); } 但是,如何能够在action函数之外(从另一个函数)调用重定向呢?比如: 控制器必须返回响应。没有办法(几乎)避免它 您可以在内部函数中使用异常,在控制器中捕获异常并从控制器返回响应。前 function testAction() { try { checkError();
function testAction() {
return $this->redirectToRoute('homepage');
}
但是,如何能够在action函数之外(从另一个函数)调用重定向呢?比如:
控制器必须返回响应。没有办法(几乎)避免它 您可以在内部函数中使用异常,在控制器中捕获异常并从控制器返回响应。前
function testAction() {
try {
checkError();
} catch(Exception $e) {
return $this->redirectToRoute('error');
}
$this->redirectToRoute('success');
}
然后在checkError()
函数中抛出一个异常
function checkError() {
throw new Exception();
}
这是一个基本情况。还有更多,还有更多。控制器必须返回响应。没有办法(几乎)避免它 您可以在内部函数中使用异常,在控制器中捕获异常并从控制器返回响应。前
function testAction() {
try {
checkError();
} catch(Exception $e) {
return $this->redirectToRoute('error');
}
$this->redirectToRoute('success');
}
然后在checkError()
函数中抛出一个异常
function checkError() {
throw new Exception();
}
这是一个基本情况。还有更多,还有更多。控制器必须返回响应。没有办法(几乎)避免它 您可以在内部函数中使用异常,在控制器中捕获异常并从控制器返回响应。前
function testAction() {
try {
checkError();
} catch(Exception $e) {
return $this->redirectToRoute('error');
}
$this->redirectToRoute('success');
}
然后在checkError()
函数中抛出一个异常
function checkError() {
throw new Exception();
}
这是一个基本情况。还有更多,还有更多。控制器必须返回响应。没有办法(几乎)避免它 您可以在内部函数中使用异常,在控制器中捕获异常并从控制器返回响应。前
function testAction() {
try {
checkError();
} catch(Exception $e) {
return $this->redirectToRoute('error');
}
$this->redirectToRoute('success');
}
然后在checkError()
函数中抛出一个异常
function checkError() {
throw new Exception();
}
这是一个基本情况。还有很多,也有很多。redirectToRoute()总是需要返回,因为它实际上是向浏览器发送一个响应来触发重定向。如果没有从包含redirectToRoute()调用的方法返回任何内容,则重定向不会返回到浏览器,也不会发生重定向。redirectToRoute()始终需要返回,因为它实际做的是向触发重定向的浏览器发送响应。如果没有从包含redirectToRoute()调用的方法返回任何内容,则重定向不会返回到浏览器,也不会发生重定向。redirectToRoute()始终需要返回,因为它实际做的是向触发重定向的浏览器发送响应。如果没有从包含redirectToRoute()调用的方法返回任何内容,则重定向不会返回到浏览器,也不会发生重定向。redirectToRoute()始终需要返回,因为它实际做的是向触发重定向的浏览器发送响应。如果没有从包含redirectToRoute()调用的方法返回任何内容,则重定向不会返回到浏览器,也不会发生重定向。为什么不这样做:
public function testAction() {
if (checkError()) {
return $this->redirectToRoute('homepage');
} else {
// return normal response
}
}
private function checkError() {
//test something
if ($error) return true; //I know I could just return $error
return false; //just making this clear
}
为什么不这样做:
public function testAction() {
if (checkError()) {
return $this->redirectToRoute('homepage');
} else {
// return normal response
}
}
private function checkError() {
//test something
if ($error) return true; //I know I could just return $error
return false; //just making this clear
}
为什么不这样做:
public function testAction() {
if (checkError()) {
return $this->redirectToRoute('homepage');
} else {
// return normal response
}
}
private function checkError() {
//test something
if ($error) return true; //I know I could just return $error
return false; //just making this clear
}
为什么不这样做:
public function testAction() {
if (checkError()) {
return $this->redirectToRoute('homepage');
} else {
// return normal response
}
}
private function checkError() {
//test something
if ($error) return true; //I know I could just return $error
return false; //just making this clear
}
那样做没有任何意义
redirectToRoute
返回一个RedirectResponse
对象,您必须对该对象执行某些操作,就其本身而言,在方法中“浮动”是没有用的。也许你可以解释为什么你(认为你)需要这个?那样做没有任何意义redirectToRoute
返回一个RedirectResponse
对象,您必须对该对象执行某些操作,就其本身而言,在方法中“浮动”是没有用的。也许你可以解释为什么你(认为你)需要这个?那样做没有任何意义redirectToRoute
返回一个RedirectResponse
对象,您必须对该对象执行某些操作,就其本身而言,在方法中“浮动”是没有用的。也许你可以解释为什么你(认为你)需要这个?那样做没有任何意义redirectToRoute
返回一个RedirectResponse
对象,您必须对该对象执行某些操作,就其本身而言,在方法中“浮动”是没有用的。也许你可以解释一下为什么你(认为你)需要这个?这个函数是在父类内部定义的。我从不止一个控制器动作中调用它。这不是在每个动作中检查它的更好方法吗?那么我建议使用链接到我的答案的方法。通过处理kernel.exception,您可以在需要时重定向用户。使用可以存储响应的类扩展标准异常。在函数中抛出该异常和所需的响应,并在事件处理程序中将其设置为$event->setResponse()。此函数在父类中定义。我从不止一个控制器动作中调用它。这不是在每个动作中检查它的更好方法吗?那么我建议使用链接到我的答案的方法。通过处理kernel.exception,您可以在需要时重定向用户。使用可以存储响应的类扩展标准异常。在函数中抛出该异常和所需的响应,并在事件处理程序中将其设置为$event->setResponse()。此函数在父类中定义。我从不止一个控制器动作中调用它。这不是在每个动作中检查它的更好方法吗?那么我建议使用链接到我的答案的方法。通过处理kernel.exception,您可以在需要时重定向用户。使用可以存储响应的类扩展标准异常。在函数中抛出该异常和所需的响应,并在事件处理程序中将其设置为$event->setResponse()。此函数在父类中定义。我从不止一个控制器动作中调用它。这不是在每个动作中检查它的更好方法吗?那么我建议使用链接到我的答案的方法。通过处理kernel.exception,您可以在需要时重定向用户。使用可以存储响应的类扩展标准异常。在函数中抛出带有所需响应的异常,并将其设置为$event->se