senj/dynamic-subdomain-bundle

Symfony3 动态子域名处理 Bundle

安装: 95

依赖者: 0

建议者: 0

安全: 0

星标: 1

关注者: 2

分支: 0

类型:symfony-bundle

1.0.0 2017-02-26 15:53 UTC

This package is not auto-updated.

Last update: 2024-09-28 20:14:49 UTC


README

安装

composer.json

"require": {
    "senj/dynamic-subdomain-bundle": "dev-master"
}

app/AppKernel.php

$bundles = array(
    # [...]
    new Senj\DynamicSubdomainBundle\SenjDynamicSubdomainBundle(),
    # [...]
);

配置

在 app/config.yaml

senj_dynamic_subdomain:
    base_host: domain.com
    parameter_name: ~
    entity: Acme\DemoBundle\Entity\MySite
    property: ~
  • base_host:

    • 域名基础主机,所有子域名都附加在此
    • 必需
    • 示例: domain.com
  • parameter_name:

    • 将在当前 Request 上设置的参数名称
    • 可选
    • 默认值: subdomain
  • entity:

    • 映射到子域名的实体类或Doctrine别名
    • 必需
    • 示例: Acme\DemoBundle\Entity\MySite
  • property:

    • 在您的实体中存储子域名名称的属性名称
    • 可选
    • 默认值: subdomain
  • method:

    • 将被调用的以获取具有定义属性的对象的名称的方法
    • 可选
    • 默认值: findOneBy

使用

  1. 创建映射到您的子域名的实体
  2. 通过 Symfony Request 对象获取当前子域名对象

在 php 中,假设 senj_dynamic_subdomain.property 等于 subdomain(默认值)

use Symfony\Component\HttpFoundation\Request;

class DefaultController extends Controller {

    public function indexAction(Request $request) {
        $subdomainobject = $request->attributes->get('subdomain');
        var_dump($subdomainobject);
    }

在 twig 中,假设 senj_dynamic_subdomain.property 等于 subdomain(默认值),并且映射到子域名的实体具有 title 属性

{{ app.request.attributes.get('subdomain').title }}

注意

如果数据库中找不到子域名,Bundle 将抛出异常(Symfony\Component\HttpKernel\Exception\NotFoundHttpException)。