Symfony:为什么我不允许结合"键入"使用"默认值"在routing.yml中

时间:2016-01-27 07:16:17

标签: php symfony

问题的简短版本: Symfony的错误消息 解释说我不能同时使用Executing tasks: [:app:generateDebugSources, :app:generateDebugAndroidTestSources] Configuration on demand is an incubating feature. :app:preBuild UP-TO-DATE :app:preDebugBuild UP-TO-DATE :app:checkDebugManifest :app:preReleaseBuild UP-TO-DATE :app:prepareComAndroidSupportAppcompatV72311Library UP-TO-DATE :app:prepareComAndroidSupportRecyclerviewV72311Library UP-TO-DATE :app:prepareComAndroidSupportSupportV42311Library UP-TO-DATE :app:prepareDebugDependencies :app:compileDebugAidl UP-TO-DATE :app:compileDebugRenderscript UP-TO-DATE :app:generateDebugBuildConfig UP-TO-DATE :app:generateDebugAssets UP-TO-DATE :app:mergeDebugAssets UP-TO-DATE :app:generateDebugResValues UP-TO-DATE :app:generateDebugResources UP-TO-DATE :app:mergeDebugResources UP-TO-DATE :app:processDebugManifest UP-TO-DATE :app:processDebugResources FAILED FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':app:processDebugResources'. > com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Users\<USERNAME>\AppData\Local\Android\sdk\build-tools\23.0.2\aapt.exe'' finished with non-zero exit value 1 * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. BUILD FAILED Total time: 12.753 secs type,我只能使用defaults(请参阅下面的详细信息)。 为什么会这样?我该如何解决?

详细版本:

以下是我在Symfony中所做的确切顺序:

resources

composer create-project symfony/framework-standard-edition sym-book/ '~2.5' php app/console generate:bundle --namespace=MiddleMan/BookBundle --format=yml 的内容编辑为

src/MiddleMan/BookBundle/Resources/config/routing.yml

在目录middle_man_book_example: path: /example defaults: { _controller: MiddleManBookBundle:Lucky:number } type: annotation 中, 将src/MiddleMan/BookBundle/Controller重命名为DefaultController.php,并将其内容编辑为

LuckyController.php

在浏览器中输入namespace MiddleMan\BookBundle\Controller; class LuckyController { /** * @Route("/lucky/number") */ public function numberAction() { $number = rand(0, 100); return new Response( '<html><body>Lucky number: '.$number.'</body></html>' ); } }

错误消息如下:

localhost:8000/example/lucky/number

1 个答案:

答案 0 :(得分:2)

如果您使用type: annotation,则不需要,实际上也不必将defaults部分存储在routing.yml中。将在其自己的注释中为每个路径配置默认值部分,路径注释将如下所示:

/**
 * Sample route
 * @Route("/{id}", name="sample-route-name", defaults={"id" = 1})
 * //defaults section is there to provide default values
 *
 * @Method({"GET", "POST"}) // not actually needed, default - GET
 */

yml路由配置如下所示:

sample_bundle_routing:
    resource: "@YourBundle/Controller/"
    type:     annotation
    prefix:   /some_prefix/

<强> UPD 此yml配置应放在主routing.yml中。但你可以使用另一种变体。在主routing.yml中放了这个:

sample_bundle_routing:
    resource: "@YourBundle/Resources/config/routing.yml"

然后在您放入主routing.yml的{​​{1}}作为资源,您可以写:

routing.yml

我有一个问题:为什么需要同时使用yml和注释路由配置?我的意思是你在下面的评论中写道:&#34;但我还需要在我的目录中编辑routing.yml文件,以给出控制器名称和操作方法名称。&#34;。如果使用注释路由类型 - 您可以在那里执行此操作,无需为yml中的注释路由进行配置。我的意思是:您可以将路由作为每个操作的注释,也可以作为bundle / main sample_bundle_routing: resource: "@YourBundle/Controller/" type: annotation prefix: /some_prefix/ 中的字符串进行路由,而不是同时进行路由!如果你使用注释路由,你唯一需要放在yml中的是 - 在哪里寻找路由配置(在我的例子中它是routing.yml路径)。