में एक सेवा से रीडायरेक्ट करें मेरे पास एक ऐसी सेवा है जो किसी पृष्ठ के लिए डेटा देखती है, लेकिन यदि वह डेटा नहीं मिला है, तो उसे होमपेज पर रीडायरेक्ट करना चाहिए। मेरे जीवन के लिए, मैं यह नहीं समझ सकता कि एसएफ 2 में इसे कैसे किया जाए। सेवाओं और राउटर के साथ काम करने के कई अलग-अलग तरीके हैं, लेकिन कोई भी काम नहीं कर रहा है।सिम्फनी 2
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
स्लीली सही है, आपको अपने कंट्रोलर में कोई रीडायरेक्ट करना चाहिए, न कि आपकी सेवा में। –
@ChrisMcKinnel क्योंकि? मेरे पास कई बार 'यदि उपयोगकर्ता लॉग इन नहीं है, तो लॉगिन पेज पर रीडायरेक्ट करें' वास्तव में? मुझे यह 100 बार डुप्लिकेट करना है? बुरा बुरा बुरा – Toskan