prodigious / symfony-multisite-bundle
此组件允许您在symfony应用程序中管理多站点。
1.0.8
2018-10-10 13:54 UTC
Requires
- php: >=7.1.0
- doctrine/doctrine-bundle: ~1.6
- symfony/symfony: ^3.0
README
该仓库包含用于Symfony 3的symfony多站点组件。此组件允许您在symfony应用程序中管理多站点。
- 每个站点可以有自己的数据库连接或使用相同的数据库。
- 每个站点可以有不同的本地化设置
- 每个站点可以有自己的应用程序文件夹和公共文件夹
- 每个站点可以有自己的robots.txt文件
公共文件夹结构
每个站点首先在其自己的文件夹中查找资产
例如(demo_2)
站点demo_2将首先在以下位置查找图像chat.png
/web/public/demo_2/imgs/chat.png
如果此图像不存在,将使用文件/web/imgs/chat.png
robots.txt结构
每个站点可以在/robots/hostname.txt文件夹中拥有自己的robots.txt文件
/robots/hostname.txt
如果hostname.txt不存在,将使用文件/web/robots.txt。
安装
composer require prodigious/symfony-multisite-bundle
设置
$bundles = array( ... new Prodigious\MultisiteBundle\MultisiteBundle(), ... );
然后,将这些行添加到您的symfony项目的composer.json中
"scripts": {
"post-install-cmd": [
...
"Prodigious\\MultisiteBundle\\Composer\\ScriptHandler::installBundle"
],
"post-update-cmd": [
...
"Prodigious\\MultisiteBundle\\Composer\\ScriptHandler::installBundle"
]
}
之后,使用以下命令初始化组件
composer install
安装后,组件将在您的项目中创建一些文件
- sites/
- app/MultisiteKernel.php
您需要修改一些文件
将以下行添加到web文件夹中的.htaccess中
<IfModule mod_rewrite.c>
RewriteEngine On
# Multisite conditions
RewriteCond %{DOCUMENT_ROOT}/robots/%{HTTP_HOST}.txt -f
RewriteRule ^robots\.txt$ robots/%{HTTP_HOST}.txt [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^public/([^/]+)(?:/(.*)|$) /$2 [QSA,R,L]
# End
</IfModule>
修改web文件夹中的app.php和app_dev.php
替换
require __DIR__.'/../vendor/autoload.php
为
require __DIR__.'/../sites/autoload/sites.php';
并且替换
// app.php
$kernel = new AppKernel('prod', false);
// app_dev.php
$kernel = new AppKernel('dev', true);
为
// app.php
$kernel = new MultisiteKernel('prod', false);
$kernel->setSite($site);
// app_dev.php
$kernel = new MultisiteKernel('dev', true);
$kernel->setSite($site);
如下所示
// require __DIR__.'/../vendor/autoload.php'; require __DIR__.'/../sites/autoload/sites.php'; if (PHP_VERSION_ID < 70000) { include_once __DIR__.'/../var/bootstrap.php.cache'; } $kernel = new MultisiteKernel('prod', false); $kernel->setSite($site); if (PHP_VERSION_ID < 70000) { $kernel->loadClassCache(); }
说明
有一系列命令来管理您的站点。
创建新站点
php bin/console site:create
获取站点列表
php bin/console site:list
禁用站点
php bin/console site:disable --name=demo_1
启用站点
php bin/console site:enable --name=demo_1
删除站点
php bin/console site:delete --name=demo_1
同步配置
php bin/console site:config:sync
属性
$currentSite = $request->attributes->get('site'); // 'app' by default
$currentInstance = $request->attributes->get('instance');
$currentLocal = $request->getLocale();
附加信息
作者:Nan GUO
公司:Prodigious