ページのデータを検索するサービスがありますが、そのデータが見つからない場合は、ホームページにリダイレクトする必要があります。私の人生にとって、私はSf2でこれをどうやって行うのか分かりません。サービスやルーターを扱うにはさまざまな方法がありますが、どれもうまくいかないようです。Symfony2のサービスからのリダイレクト
namespace Acme\SomeBundle\Services;
use Acme\SomeBundle\Entity\Node;
use \Doctrine\ORM\EntityManager;
use \Symfony\Component\HttpKernel\Event\GetResponseEvent;
use \Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use \Symfony\Bundle\FrameworkBundle\Routing\Router;
use \Symfony\Component\Routing\Generator\UrlGenerator;
use Symfony\Component\HttpFoundation\RedirectResponse;
class NodeFinder
{
private $em;
private $router;
public function __construct(EntityManager $em, Router $router)
{
$this->em = $em;
$this->router = $router;
}
public function getNode($slug)
{
$node = $this->em->getRepository('SomeBundle:Node')->findOneBy(array('slug' => $slug));
if (!$node) { //if no node found
return $this->router->redirect('homepage', array(), true);
}
}
ありがとうございます。問題は、私はこのサービスを多くの場所で使用しているため、コントローラでリダイレクトを行うコードの重複がたくさんあることです。 – Acyra
Slllyが正しいです、あなたはあなたのサービスではなく、あなたのコントローラでリダイレクトを行うべきです。 @ChrisMcKinnelの理由から –
?私は何度も 'ユーザーがログインしていない場合、ログインページにリダイレクトする'ことがありますか?私はこれを100回複製する必要がありますか?悪い悪い悪い – Toskan