天天看点

Symfony4.1 Routing 基础Routing

Symfony4.1 Routing 基础

  • Routing

Routing

  • 创建路由
# config/routes.yaml
blog_list:
   path:     /blog
   controller: App\Controller\BlogController::list
   
blog_show:
   path:     /blog/{slug}
   controller: App\Controller\BlogController::show
           
  • 场景路由
# config/routes.yaml
about_us:
   path:
       nl: /over-ons
       en: /about-us
   controller: App\Controller\CompanyController::about
   
# config/routes/annotations.yaml 
controllers:
   resource: '../../src/Controller/'
   type: annotation
   prefix:	//场景前缀
       en: '' # don't prefix URLs for English, the default locale
       nl: '/nl'
           
  • 添加{通配符}条件
# config/routes.yaml
blog_list:
   path:      /blog/{page}
   controller: App\Controller\BlogController::list
   requirements:	//限定条件(必须加,否则等于匹配    /blog/*)
       page: '\d+'

# config/routes.yaml
blog_list:
   path:      /blog/{page<\d+>}
   controller: App\Controller\BlogController::list
           
  • 给{占位符}一个默认值
# config/routes.yaml
blog_list:
   path:      /blog/{page}
   controller: App\Controller\BlogController::list
   defaults:
       page: 1
   requirements:
       page: '\d+'

# config/routes.yaml
blog_list:
   path:      /blog/{page<\d+>?1}
   controller: App\Controller\BlogController::list
           
  • 高级路由示例
# config/routes.yaml
article_show:
 path:     /articles/{_locale}/{year}/{slug}.{_format}
 controller: App\Controller\ArticleController::show
 defaults:
     _format: html
 requirements:
     _locale:  en|fr //场景
     _format:  html|rss	//限定
     year:     \d+
           
  • 生成链接
//继承controller基类方法 generateUrl()
class MainController extends AbstractController
{
   public function show($slug)
   {
       // /blog/my-blog-post
       $url = $this->generateUrl(
           'blog_show',
           array('slug' => 'my-blog-post')
       );
   }
}

 //generateUrl()具体方法
 // /blog/my-blog-post
 $url = $this->router->generate(
     'blog_show',
     array('slug' => 'my-blog-post')
 );

// /blog/2?category=Symfony
$this->router->generate('blog', array(
   'page' => 2,
   'category' => 'Symfony',
));

// generates: /over-ons
$this->router->generate('about_us', array(
   '_locale' => 'nl',
));

// http://www.example.com/blog/my-blog-post
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
$this->generateUrl('blog_show', array('slug' => 'my-blog-post'), UrlGeneratorInterface::ABSOLUTE_URL);

           

原文 : Routing

继续阅读