1、路由是程序的方法和URL的一一映射。
在配置文件裡,把經常訪問的路由放在前面,可以提高路由匹配的效率。
2、路由匹配的兩種方式
允許在方法的上面用注釋定義方法運行狀態的功能
class UserController extends Controller{ /** * @Route("/user/login") * @Template() */ public function loginAction(){ //代碼 } }
symfony2常用的配置格式
兩種方法不能同時用。
3、URL的定義
靜態URL和動態URL
<?php namespace Scource\WebBundle\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;//下面路由定義中用到Method
//定義總的router,如果當前控制器中用到的路由都是以/page開始 /** * @Route("/page") */ class DefaultController extends Controller { /** * @Route("/{page_num}",defaults={"page_num":1},requirements={"page_num"="\d+"}) * @Template() * @Method("get") */ //以上注釋並不是沒有用,是利用注釋動態影響程序代碼,定義總的路由之後,在定義當前路由時,只定義第二級路由就可以 //defaults={"page_num":1}設置page_num默認值為1 //requirements={"page_num"="\d+"}要求page_num必須為數字 //http://localhost:8000/app_dev.php/page/555 public function indexAction($page_num) { $method = $this->getRequest()->getMethod();//獲取表單數據的傳送方式 return array('name' => $page_num); } /** * @Route("/test",name="page_test") * @Template() */ //name="page_test"設置路由名稱 //通過命令行>php app/console router:match /page/test 可以查詢/page/test的路由信息 //http://localhost:8000/page/test?name=world public function testAction() { $name = $this->getRequest()->get('name');//獲取臨時傳遞參數的值 return array('name' => $name); } }
//////////////
use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter