麦苗 / sf1-embedder-bundle
该包已被废弃且不再维护。没有建议的替代包。
symfony 1.x Embedder Bundle
dev-master / 1.0.x-dev
2014-10-28 19:09 UTC
Requires
- php: >=5.3.3
- symfony-cmf/routing-bundle: ~1.2
- symfony/framework-bundle: ~2.3
This package is not auto-updated.
Last update: 2022-02-01 12:21:32 UTC
README
此包允许开发者通过提供请求的自动回退,以迭代方式将旧项目迁移到Symfony2中。请注意,这会产生一些运行时开销。
这仍然是测试版本,目前只在symfony 1.2上手动测试。
为了使其工作,必须在旧应用程序中安装symfony插件。
功能
- 支持来自多个项目的多个应用程序(前提是它们都可在本地磁盘上访问)。
- 自动匹配调试和环境设置。
- 自动登录sfuser,甚至支持用户切换。
- 所有symfony异常将由Symfony2处理。
- symfony和Symfony2调试工具栏都会显示!
安装
在composer.json中添加对butterweed/sf1-embedder-bundle
的依赖项,并在AppKernel.php中添加该包
new Symfony\Cmf\Bundle\RoutingBundle\CmfRoutingBundle(),
new Butterweed\SF1EmbedderBundle\ButterweedSF1EmbedderBundle()
配置
# config.yml
butterweed_sf1_embedder:
map:
main:
prefix: / # uses strpos to match againts pathinfo
hosts: ["example.com"] # optional host match
app: frontend
path: "%kernel.root_dir%/../legacy"
cmf_routing:
chain:
routers_by_id:
router.default: 100
butterweed_sf1_embedder.router: 0
自动登录sfGuardUser
支持Fos用户和自定义实现。当在User模型上实现GuardUserInterface
时,将自动登录。需要security.context
令牌。
interface GuardUserInterface
{
/**
* return \sfGuardUser
*/
public function getGuardUser();
/**
* return boolean
*/
public function equalsGuard($user);
}
使symfony嵌入感知
此包的目标是在尽可能不触及旧应用程序的情况下进行迁移。嵌入的应用程序可以作为一个独立的项目存在。但是,需要应用一些内部更改。幸运的是,symfony通过factories.yml和filters.yml非常易于插件化。此包提供了一个具有自定义类的symfony插件。
要安装插件,将位于Resources/extra
中的butterweedEmbeddedAwarePlugin
复制或更好链接到插件目录中,以连接新类。
# apps/frontend/config/filters.yml
rendering:
class: EmbeddedAwareRenderingFilter
# apps/frontend/config/factories.yml
controller:
class: EmbeddedAwareFrontWebController
request:
class: EmbedAwareWebRequest
就这样!你可能需要运行./symfony cc --env=prod
。
Gothas
您需要使用前缀作为子目录名称来链接资源。
# Example
cd <project-path>/web
ln -s <project-path>/legacy/web backend
对于安装在根目录(/)中的应用程序,需要额外的重写。
# example nginx conf
location ~ ^/(?!legacy).+\.(gif|css|js|png|jpeg|jpg)$ {
try_files $uri /legacy$uri;
}