Php 简单符号2';头版';控制器,路由器及;模板。为什么我仍然看到欢迎页面?
我只是从Symfony 2.7.3开始 我一直在读《这本书》,试图把新概念拼凑在一起 我把我的第一个简单的例子放在一起——我的“头版” 有了下面的代码,当我导航到时,我希望看到一个只有“TEST TEST”字样的空白页面Php 简单符号2';头版';控制器,路由器及;模板。为什么我仍然看到欢迎页面?,php,symfony,twig,Php,Symfony,Twig,我只是从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
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
我不明白为什么我仍然看到这一点,而不是我的“测试”
我盯着这个,我知道我一定错过了一些简单的,应该是显而易见的东西:-/但是什么?更多地盯着它看不会让我有任何进展
为什么我看不到“测试”,我需要在这里修复什么
./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 %}
/app/config/routing.yml
_首页:
路径:/
默认值:{u控制器:AppBundle:FrontPage:index}
./src/AppBundle/Controller/FrontPageController.php
Symfony的默认安装中包含一个AppBundle。此捆绑包包含一个默认控件,其中包含“/”的默认操作。将此控制器操作更改为处理其他路径,然后将执行与“frontpage”对应的控制器操作
在AppBundle\Controller\DefaultController中,更改索引,如下所示
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
在routing.yml文件中的行,该行(很可能)在路由之前声明。既然您说您是从Symfony开始的,建议的路径就是删除AppBundle
的DefaultController
类中的indexAction()
方法的内容,并在其中添加您自己的逻辑
Symfony中没有任何东西是“硬连线”的,但是通常建议使用AppBundle
+DefaultController
+名为homepage
的路由来定义应用程序的主页。将AppBundle\Controller\DefaultController中的“@route(“/”,…”更改为“@route(/default)”。我现在看到“测试”了。我不是在“告诉”在我的router.yml中使用的DefaultController.php。那么它真的是默认的吗,它硬连接到Symfony本身并将一直使用?我打算删除它,因为我不打算使用它。在使用之前需要了解这一点!相同的配置为“/”路径声明了两次。AppBundle获得优先权是因为e ofapp:resource:“@AppBundle/Controller/”在routing.yml文件中键入:注释