Dynamic subdomain handler for Symfony 3
Install
In composer.json
:, (*1)
"require": {
"senj/dynamic-subdomain-bundle": "dev-master"
}
In app/AppKernel.php
:, (*2)
$bundles = array(
# [...]
new Senj\DynamicSubdomainBundle\SenjDynamicSubdomainBundle(),
# [...]
);
In app/config.yaml, (*3)
senj_dynamic_subdomain:
base_host: domain.com
parameter_name: ~
entity: Acme\DemoBundle\Entity\MySite
property: ~
-
base_host
:, (*4)
- The domain base host, where all subdomains are attached
- required
- example:
domain.com
-
parameter_name
:, (*5)
- The name of the parameter that will be set on the current
Request
- optional
- default value:
subdomain
-
entity
:, (*6)
- The class or Doctrine alias of the entity mapped to subdomains
- required
- example:
Acme\DemoBundle\Entity\MySite
-
property
:, (*7)
- The name of the property storing the subdomain name in your entity
- optional
- default value:
subdomain
-
method
:, (*8)
- The name of method that will be called to get object with the property defined
- optional
- default value:
findOneBy
Use
- Create the entities mapped to your subdomains
- Get the current subdomain object through the Symfony
Request
object
In php, assuming that senj_dynamic_subdomain.property
equals subdomain
(the default value):, (*9)
use Symfony\Component\HttpFoundation\Request;
class DefaultController extends Controller {
public function indexAction(Request $request) {
$subdomainobject = $request->attributes->get('subdomain');
var_dump($subdomainobject);
}
In twig, assuming that senj_dynamic_subdomain.property
equals subdomain
(the default value), and that the entity mapped to subdomains has a title
property:, (*10)
{{ app.request.attributes.get('subdomain').title }}
Notes
If the subdomain is not found in the database, an exception will be thrown by the Bundle (Symfony\Component\HttpKernel\Exception\NotFoundHttpException
)., (*11)