【发布时间】:2018-08-18 08:42:41
【问题描述】:
我创建了一个新的 Symfony 3.4 项目,使用:
composer create-project symfony/skeleton my-project
之后我添加了以下组件:
composer require twig
composer require annotations
composer require maker
并创建了一个控制器:
php bin/console make:controller
我添加了一个带有“合法”路线的动作。这是默认控制器:
<?php
namespace App\Controller;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
class DefaultController extends Controller
{
/**
* @Route("/", name="homepage")
*/
public function index()
{
return $this->render('index.html.twig', [
'controller_name' => 'DefaultController',
]);
}
/**
* @Route("/legal", name="legal")
*/
public function legal()
{
return $this->render('legal.html.twig', []);
}
}
文件配置/routes.yaml:
#index:
# path: /
# defaults: { _controller: 'App\Controller\DefaultController::index' }
还有 config/routes/annotations.yaml:
controllers:
resource: ../../src/Controller/
type: annotation
当我访问主页时,没问题,页面正在显示。但是当我尝试 /legal 页面时,我有一个 404 :
未找到 - 在此服务器上未找到请求的 URL /legal。
php bin/console debug:router 显示预期:
------------------ -------- -------- ------ --------------------------
Name Method Scheme Host Path
------------------ -------- -------- ------ --------------------------
homepage ANY ANY ANY /
legal ANY ANY ANY /legal
_twig_error_test ANY ANY ANY /_error/{code}.{_format}
------------------ -------- -------- ------ --------------------------
我使用控制台命令清除了缓存,并删除了 var/cache 目录的内容。但仍然是 404。
我是 3.4 的新手。有任何想法吗 ?谢谢...
【问题讨论】:
-
您是使用内置的 PHP 服务器还是通过 Apache 提供服务?
-
你的
/路线有效吗? -
如果你使用 Sensio\Bundle\FrameworkExtraBundle\Configuration\Route 而不是 Symfony\Component\Routing\Annotation\Route 会怎样?
-
@jljohnstone:我通过 Apache 为站点提供服务,@Antoine Galluet:是的,
/路线有效。我发现我忘记了.htaccess,它不是由 Symfony/Flex 自动创建的(见我的回答)。
标签: symfony symfony-3.4