一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - PHP教程 - Symfony2創(chuàng)建基于域名的路由相關(guān)示例

Symfony2創(chuàng)建基于域名的路由相關(guān)示例

2021-03-25 16:15陳達(dá)輝 PHP教程

這篇文章主要介紹了Symfony2創(chuàng)建基于域名的路由,結(jié)合實例形式分析了Symfony2路由的創(chuàng)建技巧,需要的朋友可以參考下

本文實例講述了Symfony2創(chuàng)建基于域名路由實現(xiàn)方法。分享給大家供大家參考,具體如下:

你可以匹配將要來到的請求以HTTP域名的方式

YAML方式

?
1
2
3
4
5
6
7
mobile_homepage:
 path:  /
 host:  m.example.com
 defaults: { _controller: AcmeDemoBundle:Main:mobileHomepage }
homepage:
 path:  /
 defaults: { _controller: AcmeDemoBundle:Main:homepage }

XML方式

?
1
2
3
4
5
6
7
8
9
10
11
12
<?xml version="1.0" encoding="UTF-8" ?>
<routes xmlns="http://symfony.com/schema/routing"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://symfony.com/schema/routing
  http://symfony.com/schema/routing/routing-1.0.xsd">
 <route id="mobile_homepage" path="/" host="m.example.com">
  <default key="_controller">AcmeDemoBundle:Main:mobileHomepage</default>
 </route>
 <route id="homepage" path="/">
  <default key="_controller">AcmeDemoBundle:Main:homepage</default>
 </route>
</routes>

PHP方式

?
1
2
3
4
5
6
7
8
9
10
use Symfony\Component\Routing\RouteCollection;
use Symfony\Component\Routing\Route;
$collection = new RouteCollection();
$collection->add('mobile_homepage', new Route('/', array(
 '_controller' => 'AcmeDemoBundle:Main:mobileHomepage',
), array(), array(), 'm.example.com'));
$collection->add('homepage', new Route('/', array(
 '_controller' => 'AcmeDemoBundle:Main:homepage',
)));
return $collection;

兩個路由匹配相同的路徑  / ,然而第一個將只有域名為m.example.com才匹配

使用占位符

這個域名選項使用占位符的路徑匹配系統(tǒng)。這樣就意味著你可以在你的域名中使用占位符匹配的域名。

YAML

?
1
2
3
4
5
6
7
projects_homepage:
 path:  /
 host:  "{project_name}.example.com"
 defaults: { _controller: AcmeDemoBundle:Main:mobileHomepage }
homepage:
 path:  /
 defaults: { _controller: AcmeDemoBundle:Main:homepage }

XML

?
1
2
3
4
5
6
7
8
9
10
11
12
<?xml version="1.0" encoding="UTF-8" ?>
<routes xmlns="http://symfony.com/schema/routing"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://symfony.com/schema/routing
  http://symfony.com/schema/routing/routing-1.0.xsd">
 <route id="projects_homepage" path="/" host="{project_name}.example.com">
  <default key="_controller">AcmeDemoBundle:Main:mobileHomepage</default>
 </route>
 <route id="homepage" path="/">
  <default key="_controller">AcmeDemoBundle:Main:homepage</default>
 </route>
</routes>

PHP

?
1
2
3
4
5
6
7
8
9
10
use Symfony\Component\Routing\RouteCollection;
use Symfony\Component\Routing\Route;
$collection = new RouteCollection();
$collection->add('project_homepage', new Route('/', array(
 '_controller' => 'AcmeDemoBundle:Main:mobileHomepage',
), array(), array(), '{project_name}.example.com'));
$collection->add('homepage', new Route('/', array(
 '_controller' => 'AcmeDemoBundle:Main:homepage',
)));
return $collection;

你還可以為這些占位符設(shè)置條件和默認(rèn)的選項。列如,如果你想匹配  m.example.com 和mobile.example.com你可以按照如下方式

YAML

?
1
2
3
4
5
6
7
8
9
10
11
mobile_homepage:
 path:  /
 host:  "{subdomain}.example.com"
 defaults:
  _controller: AcmeDemoBundle:Main:mobileHomepage
  subdomain: m
 requirements:
  subdomain: m|mobile
homepage:
 path:  /
 defaults: { _controller: AcmeDemoBundle:Main:homepage }

XML

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?xml version="1.0" encoding="UTF-8" ?>
<routes xmlns="http://symfony.com/schema/routing"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://symfony.com/schema/routing
  http://symfony.com/schema/routing/routing-1.0.xsd">
 <route id="mobile_homepage" path="/" host="{subdomain}.example.com">
  <default key="_controller">AcmeDemoBundle:Main:mobileHomepage</default>
  <default key="subdomain">m</default>
  <requirement key="subdomain">m|mobile</requirement>
 </route>
 <route id="homepage" path="/">
  <default key="_controller">AcmeDemoBundle:Main:homepage</default>
 </route>
</routes>

PHP

?
1
2
3
4
5
6
7
8
9
10
11
12
13
use Symfony\Component\Routing\RouteCollection;
use Symfony\Component\Routing\Route;
$collection = new RouteCollection();
$collection->add('mobile_homepage', new Route('/', array(
 '_controller' => 'AcmeDemoBundle:Main:mobileHomepage',
 'subdomain' => 'm',
), array(
 'subdomain' => 'm|mobile',
), array(), '{subdomain}.example.com'));
$collection->add('homepage', new Route('/', array(
 '_controller' => 'AcmeDemoBundle:Main:homepage',
)));
return $collection;

你還可以使用服務(wù)參數(shù),如果你不想將域名寫死寫法如下

YAML

?
1
2
3
4
5
6
7
8
9
10
11
mobile_homepage:
 path:  /
 host:  "m.{domain}"
 defaults:
  _controller: AcmeDemoBundle:Main:mobileHomepage
  domain: '%domain%'
 requirements:
  domain: '%domain%'
homepage:
 path: /
 defaults: { _controller: AcmeDemoBundle:Main:homepage }

XML

?
1
2
3
4
5
6
7
8
9
10
11
12
13
<?xml version="1.0" encoding="UTF-8" ?>
<routes xmlns="http://symfony.com/schema/routing"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://symfony.com/schema/routing http://symfony.com/schema/routing/routing-1.0.xsd">
 <route id="mobile_homepage" path="/" host="m.{domain}">
  <default key="_controller">AcmeDemoBundle:Main:mobileHomepage</default>
  <default key="domain">%domain%</default>
  <requirement key="domain">%domain%</requirement>
 </route>
 <route id="homepage" path="/">
  <default key="_controller">AcmeDemoBundle:Main:homepage</default>
 </route>
</routes>

PHP

?
1
2
3
4
5
6
7
8
9
10
11
12
13
use Symfony\Component\Routing\RouteCollection;
use Symfony\Component\Routing\Route;
$collection = new RouteCollection();
$collection->add('mobile_homepage', new Route('/', array(
 '_controller' => 'AcmeDemoBundle:Main:mobileHomepage',
 'domain' => '%domain%',
), array(
 'domain' => '%domain%',
), array(), 'm.{domain}'));
$collection->add('homepage', new Route('/', array(
 '_controller' => 'AcmeDemoBundle:Main:homepage',
)));
return $collection;

提示

確保你總是包含了默認(rèn)的選項 domain占位符,否則你需要包含 domain的值每當(dāng)你使用該路由生成URL的時候。

使用包含進(jìn)來的路由規(guī)則匹配

你可以設(shè)置域名選項通過導(dǎo)入路由配置文件,方式如下

YAML

?
1
2
3
acme_hello:
 resource: '@AcmeHelloBundle/Resources/config/routing.yml'
 host:  "hello.example.com"

XML

?
1
2
3
4
5
6
<?xml version="1.0" encoding="UTF-8" ?>
<routes xmlns="http://symfony.com/schema/routing"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://symfony.com/schema/routing http://symfony.com/schema/routing/routing-1.0.xsd">
 <import resource="@AcmeHelloBundle/Resources/config/routing.xml" host="hello.example.com" />
</routes>

PHP

?
1
2
3
4
use Symfony\Component\Routing\RouteCollection;
$collection = new RouteCollection();
$collection->addCollection($loader->import("@AcmeHelloBundle/Resources/config/routing.php"), '', array(), array(), array(), 'hello.example.com');
return $collection;

域名 hello.example.com  將要被設(shè)置為加載進(jìn)來的新路由配置文件中的每個路由

測試你的Controllers

你需要設(shè)置HTTP的域名頭文件在你請求的對象中,如果你想正確的匹配到網(wǎng)址在你的測試函數(shù)中

?
1
2
3
4
5
6
7
$crawler = $client->request(
 'GET',
 '/homepage',
 array(),
 array(),
 array('HTTP_HOST' => 'm.' . $client->getContainer()->getParameter('domain'))
);

希望本文所述對大家基于Symfony2框架的PHP程序設(shè)計有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: kayden·kross hd在线| ady@ady9.映画网| 97视频免费人人观看人人 | 欧美一区二区三区免费观看视频 | 无码中文字幕热热久久 | 欧美一级激情 | 男人日女人的逼视频 | 国模人体aⅴ | 免费370理论片中文字幕 | 好吊色永久免费视频大全 | 好男人免费高清在线观看2019 | 无码精品一区二区三区免费视频 | 波多野结衣同性系列698 | 男人的私人影院 | 国产三级精品久久三级国专区 | 国产美女操 | 毛片免费观看的视频 | 国产精品女同久久免费观看 | 日本漫画大全之工之口 | 亚洲国产精品综合欧美 | 污小说h| 国产福利在线观看91精品 | 亚洲国产成人久久综合一 | 四虎成人免费观看在线网址 | 国产99区 | 午夜神器18以下不能进免费 | 秋霞鲁丝影院久久人人综合 | 好大好深受不了了快进来 | 大学第一次基本都没了 | 污网站免费观看在线高清 | 日本福利视频网站 | 蜜月aⅴ免费一区二区三区 蜜桃影像传媒推广 | 妇女澡堂淋浴性 | 国产免费看黄的私人影院 | 亚洲国产精品成人久久 | 欧美日韩中文国产一区 | 69短视频| 美女的隐私视频免费看软件 | 新影音先锋男人色资源网 | 亚洲冬月枫中文字幕在线看 | 美女主播免费观看 |