Symfony 控制器教程错误
Symfony controller tutorial error
我正在学习如何使用 Symfony (http://symfony.com/doc/current/quick_tour/the_controller.html),但是在完成 "Route Parameters" 部分并转到 localhost/hello/fabien
之后,我收到:
"404 未找到请求的 URL /hello/fabien 在此服务器上未找到。"。
但是,我看不出我做错了什么 - 下面是我的代码:
config.yml
# ...
framework:
templating:
{engines: ['twig','php']}
默认控制器:
<?php
namespace AppBundle\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
class DefaultController extends Controller
{
/**
* @Route("/", name="homepage")
*/
public function indexAction()
{
/** return new Response('Welcome to Symfony!');*/
return $this->render('default/index.html.twig');
}
/**
* @Route("/hello/{name}", name="hello")
*/
public function helloAction($name)
{
return $this->render('default/hello.html.twig', array(
'name' => $name
));
}
}
base.html.twig
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>{% block title %}Welcome!{% endblock %}</title>
{% block stylesheets %}{% endblock %}
<link rel="icon" type="image/x-icon" href="{{ asset('favicon.ico') }}" />
</head>
<body>
{% block body %}{% endblock %}
{% block javascripts %}{% endblock %}
</body>
</html>
hello.html.twig
{# app/Resources/views/default/hello.html.twig #}
{% extends 'base.html.twig' %}
{% block body %}
<h1>Hi {{ name }}! Welcome to Symfony!</h1>
{% endblock %}
错误消息是不言自明的。代码应该是这样的:
/**
* @Route("/hello/{name}", name="hello")
*/
public function helloAction($name)
{
return $this->render('AppBundle:default:hello.html.twig', array(
'name' => $name
));
}
或使用注释简化:
/**
* @Route("/hello/{name}", name="hello")
* @Template()
*/
public function helloAction($name)
{
return array(
'name' => $name
);
}
在我的例子中,我只是删除了 {% extends 'mybase.html.twig' %} 和 运行 它开始工作的代码,然后我再次将它放在同一个地方并且它正在工作。似乎可能是一些缓存问题。所以我请求你也清除缓存。
谢谢
里金
我正在学习如何使用 Symfony (http://symfony.com/doc/current/quick_tour/the_controller.html),但是在完成 "Route Parameters" 部分并转到 localhost/hello/fabien
之后,我收到:
"404 未找到请求的 URL /hello/fabien 在此服务器上未找到。"。
但是,我看不出我做错了什么 - 下面是我的代码:
config.yml
# ...
framework:
templating:
{engines: ['twig','php']}
默认控制器:
<?php
namespace AppBundle\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
class DefaultController extends Controller
{
/**
* @Route("/", name="homepage")
*/
public function indexAction()
{
/** return new Response('Welcome to Symfony!');*/
return $this->render('default/index.html.twig');
}
/**
* @Route("/hello/{name}", name="hello")
*/
public function helloAction($name)
{
return $this->render('default/hello.html.twig', array(
'name' => $name
));
}
}
base.html.twig
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>{% block title %}Welcome!{% endblock %}</title>
{% block stylesheets %}{% endblock %}
<link rel="icon" type="image/x-icon" href="{{ asset('favicon.ico') }}" />
</head>
<body>
{% block body %}{% endblock %}
{% block javascripts %}{% endblock %}
</body>
</html>
hello.html.twig
{# app/Resources/views/default/hello.html.twig #}
{% extends 'base.html.twig' %}
{% block body %}
<h1>Hi {{ name }}! Welcome to Symfony!</h1>
{% endblock %}
错误消息是不言自明的。代码应该是这样的:
/**
* @Route("/hello/{name}", name="hello")
*/
public function helloAction($name)
{
return $this->render('AppBundle:default:hello.html.twig', array(
'name' => $name
));
}
或使用注释简化:
/**
* @Route("/hello/{name}", name="hello")
* @Template()
*/
public function helloAction($name)
{
return array(
'name' => $name
);
}
在我的例子中,我只是删除了 {% extends 'mybase.html.twig' %} 和 运行 它开始工作的代码,然后我再次将它放在同一个地方并且它正在工作。似乎可能是一些缓存问题。所以我请求你也清除缓存。
谢谢 里金