如何使用新的目录结构创建新的Symfony项目?

时间:2014-07-25 13:28:57

标签: symfony

直到几天前,才有可能使用new (Symfony 3) directory structure创建一个新的Symfony项目。运行composer create-project symfony/framework-standard-edition path/ "2.5.*"时,Composer会询问以下问题:

  

您想使用Symfony 3目录结构吗? [Y / N]

新结构提供了一些改进,例如consoleapp目录移动到bin目录,phpunit.xml.distapp移出}目录到根目录。缓存和日志目录已移至新的var目录。

请查看this answer(由我撰写)以获取完整的更改列表。

但是,全新安装的标准发行版不再提供此选项。这似乎是问题has been removed on July 16th,因为新的目录结构造成了太多的混乱,特别是对于新用户。另见this issue on GitHub

是否仍然可以使用新目录结构创建项目?

3 个答案:

答案 0 :(得分:17)

仍然可以触发问题,并将项目转换为新的目录结构。 (但仅在您创建新项目时,即运行composer create-project

为此,您需要将SENSIOLABS_ENABLE_NEW_DIRECTORY_STRUCTURE环境变量设置为true。这可以通过将SENSIOLABS_ENABLE_NEW_DIRECTORY_STRUCTURE=true添加到Composer命令来完成。

因此,要创建新项目,请在终端中运行以下命令:

SENSIOLABS_ENABLE_NEW_DIRECTORY_STRUCTURE=true composer create-project symfony/framework-standard-edition path/ "2.5.*"

并且Composer会询问您是否需要新的目录结构。

更新

正如barius在评论中所述,此功能已从每版本2.7.5的Symfony标准版中删除。如果你真的想使用Symfony 3结构,你可以通过两个步骤安装Symfony来获得它:

  1. 使用版本约束创建一个新的Symfony项目,以便获得2.6版本,它仍然会询问您是否要使用新的目录结构。
  2. 然后更改symfony/symfony包的版本约束,这样您仍然可以获得最新版本。
  3. 因此,从命令行执行以下命令:

    SENSIOLABS_ENABLE_NEW_DIRECTORY_STRUCTURE=true composer create-project symfony/framework-standard-edition project-directory/ "2.6.*"
    cd project-directory
    composer require symfony/symfony ^2.7
    

    注意:我实际上并不推荐这个,因为这是not the official recommended way to create a new Symfony project。因此,除非您真的知道自己在做什么,否则只需使用Symfony Installer创建新项目。

答案 1 :(得分:6)

要在symfony2(> = 2.5)中创建新的symfony3目录结构,您必须执行以下操作:

打开shell /命令提示符并运行follwoing命令来设置临时environment variable

的Linux:

export SENSIOLABS_ENABLE_NEW_DIRECTORY_STRUCTURE=true

窗口:

set SENSIOLABS_ENABLE_NEW_DIRECTORY_STRUCTURE=true

版本2.5和2.6

创建新的symfony3目录结构的问题是在设置环境变量后开箱即用

版本2.7和2.8

要从任何2.7和2.8版本创建新的目录结构,必须执行以下步骤:

安装所需的2.7及更高版本(使用2.7和2.8测试),目前安装2.7.7

composer create-project symfony/framework-standard-edition myproject "2.7.*"

然后修改composer.json并添加update-directory-structure

composer.json:

--- snip ---
"scripts": {
    "post-install-cmd": [
        "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",
        "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
        "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
        "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
        "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile",
        "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::prepareDeploymentTarget"
    ],
    "post-update-cmd": [
        "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",
        "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
        "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
        "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
        "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile",
        "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::prepareDeploymentTarget"
    ],
    "update-directory-structure": [
        "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::defineDirectoryStructure"
    ]
},
--- snip ---

之后才运行

composer run-script update-directory-structure

回答'y',你就完成了:

> Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::defineDirectoryStructure
Would you like to use Symfony 3 directory structure? [y/N]

现在位于console的{​​{1}}文件必须进行调整:

变化

bin/console

$loader = require __DIR__.'/autoload.php';

然后将以下方法添加到文件$loader = require __DIR__.'/../app/autoload.php'; 中的AppKernel类:

app/appKernel.php

更新:knp university article about migrating to the new directory stucture

币:   @davil

答案 2 :(得分:4)

Symfony3 BETA1版现已发布,

因此,您可以直接使用composer来安装新的symfony3版本。

如果您尚未安装,请先关注Installing Composer

然后打开终端并输入以下命令:

composer create-project symfony/framework-standard-edition symfony3 "v3.0.0-BETA1"

注意:此处symfony3是将要创建的项目或目录的名称,您可以更改它。

<强>更新 Symfony 3.0是稳定的当前版本,因此可以按照Official guide中的说明直接安装它。按照它进行最新版本安装。

composer create-project symfony/framework-standard-edition my_project_name

您可以查看这些链接,

What is the new Symfony 3 directory structure?

Are your favorite bundle ready for #Symfony3?

发布的

@FecaBouffe