2016-09-30 19 views
0

我在业余时间一直在玩Docker和Symfony,试图与他们握手。我已将我的项目推向了可以启动Docker并访问Symfony欢迎屏幕的舞台...... huzzah!Symfony 2. Route似乎在CLI中工作,但在浏览器中始终为404's

我想到了这一点,它应该是简单的航行,所以试图开始添加一些路线/控制器等。所以我设置了一个基本的路线,最终将作为登录屏幕,但我似乎永远无法访问它在浏览器。

这就是说我可以看到,它匹配(并应尽可能我知道工作),当我运行app/console route:match /login

enter image description here

继承人我所编辑的各种文件的内容/从而增加远。

应用/配置/ routing.yml中

app: 
resource: "@AppBundle/Resources/config/routing.xml" 

routing.xml

<?xml version="1.0" encoding="UTF-8" ?> 
<routes xmlns="http://symfony.com/schema/routing" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://symfony.com/schema/routing 
    http://symfony.com/schema/routing/routing-1.0.xsd"> 

<route id="login" path="/login"> 
    <default key="_controller">AppBundle:Login:__invoke</default> 
</route> 

应用/配置/ Services.yml

parameters: 
# parameter_name: value 

services: 
# service_name: 
#  class: AppBundle\Directory\ClassName 
#  arguments: ["@another_service_name", "plain_value", "%parameter_name%"] 
imports: 
    - { resource: ../../src/AppBundle/Resources/config/services.xml } 

的services.xml

<?xml version="1.0" ?> 
<container xmlns="http://symfony.com/schema/dic/services" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd"> 

    <imports> 
     <import resource="controllers.xml"/> 
    </imports> 

</container> 

controllers.xml

<?xml version="1.0" ?> 
<container xmlns="http://symfony.com/schema/dic/services" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd"> 
    <services> 

     <service id="controller.login" class="AppBundle\Controller\LoginController"> 
     </service> 

    </services> 
</container> 

LoginController.php

<?php 
namespace AppBundle\Controller; 

use Symfony\Bundle\FrameworkBundle\Controller\Controller; 
use Symfony\Component\HttpFoundation\Response; 

class LoginController extends Controller 
{ 

    public function __invoke() 
    { 
     return new Response(
      '<html><body>Huzzah!</body></html>' 
     ); 
    } 
} 

不限帮助将不胜感激,因为在我看来,它应该工作,而不是我目前正在获得的404,有什么想法?

+0

你有ACL吗?你可以抛出抛出的异常,并生成404?也许路线是好的,但是会引发'NOT_FOUND'错误,抛出异常将会提供更多线索。 –

+0

将您的routing.xml中的'_controller'更改为您的控制器的服务ID:'controller.login'。 – Fracsi

+0

@AlFoиceѫ请原谅我的无知,但什么是ACL? – cosmicsafari

回答

0

原来这个问题似乎与谁拥有app/log和app/cache Symfony文件夹有关。由于某些原因,他们在当地拥有的,当我启动我的码头集装箱时,这些根本地归于当地。

这导致Symfony无法写信给他们。一旦我从根目录更改所有者以匹配剩余的文件夹并启动我的容器,它们都按预期工作。

相关问题