我刚从Symfony 2.7.3开始。
我一直在读这本书,试图把对我来说新的概念拼凑在一起。
我已经把第一个简单的例子放在一起了——我的"首页"。
使用下面的代码,当我导航到 时,我希望看到一个空白页面,上面只有"TEST TEST"字样。http://example.com/app_dev.php/
我看到的是标准的Symfony欢迎页面
Welcome to Symfony 2.7.3
Your application is ready to start working on it at: /srv/www/test1/symfony/
What's next?
Read Symfony documentation to learn
How to create your first page in Symfony
我不明白为什么我仍然看到这个,而不是我的"TEST TEST"。
我盯着这个,知道我一定错过了一些简单的东西,应该是显而易见的:-/但是什么?盯着它看对我没有任何好处。
为什么我看不到"TEST TEST",我需要在这里修复什么?
./app/config/routing.yml
_frontpage:
path: /
defaults: { _controller: AppBundle:FrontPage:index }
./src/AppBundle/Controller/FrontPageController.php
<?php
namespace AppBundle'Controller;
use Sensio'Bundle'FrameworkExtraBundle'Configuration'Route;
use Symfony'Bundle'FrameworkBundle'Controller'Controller;
use Symfony'Component'HttpFoundation'Request;
class FrontPageController extends Controller
{
/**
* @Route("/", name="index")
*/
public function indexAction() {
return $this->render('default/page-front.html.twig');
}
}
./app/Resources/views/base.html.twig
<!DOCTYPE html>
<html>
<head>
<title>{% block title %}this title{% endblock %}</title>
{% block meta %}
<meta charset="UTF-8" />
{% endblock %}
{% block stylesheets %}{% endblock %}
</head>
<body>
{% block body %}{% endblock %}
{% block javascripts %}{% endblock %}
</body>
</html>
./app/Resources/views/default/page-front.html.twig
{% extends 'base.html.twig' %}
{% block title %}Changed Title{% endblock %}
{% block body %}
<div><p>TEST TEST</p></div>
{% endblock %}
{% block stylesheets %}
{% endblock %}
Symfony在默认安装中包含一个AppBundle。这个bundle包含一个默认控件,其中包含了'/'的默认操作。修改此控制器操作来处理其他路径,然后对应于'frontpage'的控制器操作将被执行。
在AppBundle'Controller'DefaultController中,修改indexAction,如下所示
class DefaultController extends Controller
{
/**
* @Route("/default", name="homepage")
*/
public function indexAction(Request $request)
{
// replace this example code with whatever you need
return $this->render('default/index.html.twig', array(
'base_dir' => realpath($this->container->getParameter('kernel.root_dir').'/..'),
));
}
}
为'/'路径声明了两次相同的配置。AppBundle因为
而获得优先级app:
resource: "@AppBundle/Controller/"
type: annotation
路由中的行。
既然你说你从Symfony开始,建议的路径是删除AppBundle
的DefaultController
类中的indexAction()
方法的内容,并在那里添加你自己的逻辑。
在Symfony中没有什么是"硬连接"的,但是AppBundle
+ DefaultController
+命名为homepage
的路由通常被推荐用于定义应用程序的主页