खोज…
परिचय
रूटिंग एक यूआरएल को एक नियंत्रक से मैप करने की प्रक्रिया है। सिम्फनी में एक शक्तिशाली रूटिंग घटक है जो आपको मार्गों को परिभाषित करने की अनुमति देता है।
रूटिंग घटक कई कॉन्फ़िगरेशन स्वरूपों का समर्थन करता है: एनोटेशन, YAML, XML और कच्चे PHP।
पैरामीटर
पैरामीटर | विवरण |
---|---|
नाम | मार्ग का नाम। उदाहरण: book_show |
पथ | पथ (वाइल्डकार्ड शामिल हो सकते हैं)। उदाहरण: /book/{isbn} |
चूक | मापदंडों का डिफ़ॉल्ट मान |
सरल मार्ग
YAML का उपयोग करना:
# app/config/routing.yml
blog_list:
path: /blog
defaults: { _controller: AppBundle:Blog:list }
एनोटेशन का उपयोग करना:
// src/AppBundle/Controller/BlogController.php
namespace AppBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
class BlogController extends Controller
{
/**
* @Route("/blog", name="blog_list")
*/
public function listAction()
{
// ...
}
}
/blog
URL के लिए एक अनुरोध BlogController
अंदर AppBundle
की listAction()
विधि द्वारा नियंत्रित किया जाएगा।
प्लेसहोल्डर्स के साथ रूट
YAML का उपयोग करना:
# app/config/routing.yml
blog_show:
path: /blog/{slug}
defaults: { _controller: AppBundle:Blog:show }
एनोटेशन का उपयोग करना:
// src/AppBundle/Controller/BlogController.php
namespace AppBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
class BlogController extends Controller
{
/**
* @Route("/blog/{slug}", name="blog_show")
*/
public function showAction($slug)
{
// ...
}
}
URL मिलान /blog/*
साथ कोई भी अनुरोध BlogController
भीतर AppBundle
के showAction()
विधि द्वारा नियंत्रित किया जाएगा। नियंत्रक क्रिया को विधि तर्क के रूप में प्लेसहोल्डर का मान प्राप्त होगा।
उदाहरण के लिए, /blog/my-post
लिए एक अनुरोध showAction()
को एक तर्क $slug
साथ एक कॉल ट्रिगर करेगा जिसका मूल्य my-post
। उस तर्क का उपयोग करते हुए, नियंत्रक कार्रवाई प्लेसहोल्डर के मूल्य के आधार पर प्रतिक्रिया को बदल सकती है, उदाहरण के लिए डेटाबेस से स्लग माय my-post
साथ ब्लॉग पोस्ट को पुनर्प्राप्त करके।
प्लेसहोल्डर्स के लिए डिफ़ॉल्ट मान
यदि आप एक प्लेसहोल्डर चाहते हैं जिसे छोड़ा जा सकता है, तो आप इसे एक डिफ़ॉल्ट मान दे सकते हैं:
YAML का उपयोग करना:
# app/config/routing.yml
blog_list:
path: /blog/{page}
defaults: { _controller: AppBundle:Blog:list, page: 1 }
requirements:
page: '\d+'
एनोटेशन का उपयोग करना:
// src/AppBundle/Controller/BlogController.php
namespace AppBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
class BlogController extends Controller
{
/**
* @Route("/blog/{page}", name="blog_list", requirements={"page": "\d+"})
*/
public function listAction($page = 1)
{
// ...
}
}
इस उदाहरण में, दोनों /blog
और /blog/1
URL blog_list
मार्ग से मेल blog_list
और listAction()
विधि द्वारा नियंत्रित किए listAction()
। /blog
के मामले में, listAction()
अभी भी डिफ़ॉल्ट मान 1
साथ $page
तर्क प्राप्त करेगा।