खोज…


404 प्रतिसाद वापस करें

जब सर्वर पर कोई संसाधन नहीं मिलता है, तो 404 प्रतिक्रियाएं दी जाती हैं, सिम्फनी में यह स्थिति NotFoundHttpException अपवाद को फेंककर बनाई जा सकती है। नियंत्रक के अंदर एक अतिरिक्त use बयान से बचने के लिए Controller वर्ग द्वारा प्रदान createNotFoundException() उपयोग करें

<?php

namespace Bundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;

class TestController extends Controller
{
    /**
     * @Route("/{id}", name="test")
     * Recommended to avoid template() as it has a lot of background processing.
     * Query database for 'test' record with 'id' using param converters.
     */
    public function testAction(Test $test)
    {
        if (!$test) {
            throw $this->createNotFoundException('Test record not found.');
        }
        return $this->render('::Test/test.html.twig', array('test' => $test));
    }

}

एकाधिक मार्गों

सिम्फनी में एक क्रिया के लिए कई मार्गों को परिभाषित करना संभव है। यह बहुत उपयोगी हो सकता है यदि आपके पास ऐसे कार्य हैं जो समान हैं लेकिन अलग-अलग पैरामीटर हैं।

class TestController extends Controller
{
    /**
     * @Route("/test1/{id}", name="test")
     * @Route("/test2/{id}", name="test2")
     * Here you can define multiple routes with multiple names
     */
    public function testAction(Test $test)
    {
        if (!$test) {
            throw $this->createNotFoundException('Test record not found.');
        }

        return $this->render('::Test/test.html.twig', array('test' => $test));
    }
}

POST अनुरोध पुनर्निर्देशित

जब आप एक कंट्रोलरेशन में होते हैं और आपके पास एक POST रिक्वेस्ट आती है , लेकिन इसे पोस्ट रूट विधि और रिक्वेस्ट ऑब्जेक्ट को बनाए रखते हुए, इसे एक अलग रूट पर रीडायरेक्ट करना चाहते हैं, तो आप निम्न का उपयोग कर सकते हैं:

return $this->redirectToRoute('route', array(
    'request' => $request,
), 307);

कोड 307 यहां अनुरोध विधि को संरक्षित करता है।

उपडोमेन-आधारित रूटिंग

host पैरामीटर का उपयोग करके उपडोमेन-आधारित रूटिंग को सिम्फनी में संभाला जा सकता है। उदाहरण के लिए, _locale पैरामीटर को उपडोमेन मान के रूप में उपयोग किया जा सकता है।

यह मानते हुए

locale: en
domain: somedomain.com

पैरामीटर पैरामीटर में परिभाषित किए गए parameters.yml हाइमल कॉन्फ़िगरेशन फ़ाइल, मार्ग होगा:

/**
 * @Route(
 *      "/",
 *      name="homepage",
 *      host="{_locale}.{domain}",
 *      defaults={"_locale" = "%locale%", "domain" = "%domain%"},
 *      requirements={"_locale" = "%locale%|de|fr", "domain" = "%domain%"}
 * )
 * @Route(
 *      "/",
 *      name="homepage_default",
 *      defaults={"_locale" = "%locale%"}
 * )
 */

इस बिंदु से राउटर URI जैसे कि http://de.somedomain.com को संभाल सकता है। दूसरा @Route एनोटेशन डिफ़ॉल्ट लोकेल और शून्य सबडोमेन, http://somedomain.com लिए एक @Route रूप में इस्तेमाल किया जा सकता है।

अनुमार्गण मार्गों का उपयोग करते हुए

    profile_user_profile:
        path:    /profile/{id}
        defaults: { _controller: ProfileBundle:Profile:profile }
        requirements:
            id: \d+
        methods: [get, delete]

यदि आप एनोटेशन के बजाय Routing.yml का उपयोग करने का निर्णय लेते हैं, तो आप सभी मार्गों को बेहतर तरीके से देख सकते हैं और एक को खोजना और खोजना आसान बना सकते हैं।

यह आप पर निर्भर है कि वह Routing.yml और एनोटेशन के बीच चुने । आप विभिन्न मार्गों के लिए दोनों का उपयोग कर सकते हैं लेकिन यह सबसे अच्छा समाधान नहीं है।

एनोटेशन @Route() समतुल्य है:

class ProfileController extends Controller
{
    /**
     * @Route("/profile/{id}", name="profile_user_profile", requirements={"id": "\d+"})
     * @Method("GET", "DELETE")
     */
    public function profileAction($id)
    {
        if (!$id) {
            throw $this->createNotFoundException('User not found.');
        }

        return $this->render('::Profile/profile.html.twig', array('id' => $id));
    }
}


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow