Исключение LogicException: Контроллер должен вернуть ответ (задано значение null). Вы забыли добавить оператор возврата где-нибудь в своем контроллере?
После выхода из системы я хочу перенаправить на страницу индекса, но я получаю ошибку в FOSUserBundle
В SecurityController.php
<?php
namespace ispg\Bundle\ChatBundle\Controller;
namespace FOS\UserBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\DependencyInjection\ContainerAware;
use Symfony\Component\Security\Core\SecurityContext;
use Symfony\Component\Security\Core\Exception\AuthenticationException;
class SecurityController extends ContainerAware
{
public function loginAction()
{
$request = $this->container->get('request');
/* @var $request \Symfony\Component\HttpFoundation\Request */
$session = $request->getSession();
/* @var $session \Symfony\Component\HttpFoundation\Session */
$network = $request->get("network");
// get the error if any (works with forward and redirect -- see below)
if ($request->attributes->has(SecurityContext::AUTHENTICATION_ERROR)) {
$error = $request->attributes->get(SecurityContext::AUTHENTICATION_ERROR);
} elseif (null !== $session && $session->has(SecurityContext::AUTHENTICATION_ERROR)) {
$error = $session->get(SecurityContext::AUTHENTICATION_ERROR);
$session->remove(SecurityContext::AUTHENTICATION_ERROR);
} else {
$error = '';
}
if ($error) {
// TODO: this is a potential security risk (see http://trac.symfony-project.org/ticket/9523)
$error = $error->getMessage();
}
// last username entered by the user
$lastUsername = (null === $session) ? '' : $session->get(SecurityContext::LAST_USERNAME);
//create the select tag for network selection
require 'mnoNetworks.php';
$selectHtml = "<select id=\"networks\">
<option value=\"\"> -- Select -- </option>";
foreach($networks as $network){
$selectHtml .= "<option value=\"".$network."\">".$network."</option>";
}
$selectHtml .="</select>";
return $this->container->get('templating')->renderResponse('FOSUserBundle:Security:login.html.'.$this->container->getParameter('fos_user.template.engine'), array(
'last_username' => $lastUsername,
'error' => $error,
'network' => $network,
'networkSelector' => $selectHtml
));
}
public function checkAction()
{
throw new \RuntimeException('You must configure the check path to be handled by the firewall using form_login in your security firewall configuration.');
}
public function logoutAction()
{
$bundle2 = new \ispg\Bundle\ChatBundle\Controller\DefaultController();
$bundle2->setContainer($this->container);
$returned_data = $bundle2->san();
}
}
После сеанса выхода из системы я хочу перенаправить на страницу индекса
как перенаправить на него.
Может ли кто-нибудь решить эту проблему?
2
2 answers
Джайцу прав, просто ваш контроллер расширяет контейнерное программное обеспечение, но не класс контроллера, который предоставляет ярлыки для основных действий контроллера...
return new Symfony\Component\HttpFoundation\RedirectResponse($this->generateUrl('name_of_route'));
3
Author: AlterPHP, 2012-09-25 09:27:29
Вам нужно вызвать перенаправление внутри вашего logoutAction()
...
return $this->redirect($this->generateUrl('name_of_route'));
3
Author: JamesHalsall, 2012-09-25 07:42:15