麦苗/sf1-embedder-bundle

该包已被废弃且不再维护。没有建议的替代包。

symfony 1.x Embedder Bundle

dev-master / 1.0.x-dev 2014-10-28 19:09 UTC

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;
}