Symfony4.1 Routing 基础

Symfony4.1 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值