我刚开始使用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 %}
答案 0 :(得分:2)
Symfony默认安装中包含AppBundle。此捆绑包含一个默认受控对象,其中包含&#39; /&#39;的默认操作。更改此控制器操作以处理另一个路径,然后您的控制器操作对应于&#39; frontpage&#39;将被执行。
在AppBundle \ Controller \ DefaultController中,将indexAction更改为gien
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').'/..'),
));
}
}
对于&#39; /&#39;两次声明了相同的配置。路径。由于
,AppBundle正在获得优先权app:
resource: "@AppBundle/Controller/"
type: annotation
您的routing.yml文件中的行,最有可能在您的路线之前声明。
答案 1 :(得分:0)
既然你说你从Symfony开始,建议的路径就是删除indexAction()
DefaultController
类中AppBundle
方法的内容并添加你自己的逻辑。
没有什么是&#34;硬连线&#34;在Symfony中,通常建议使用AppBundle
+ DefaultController
+名为homepage
的路由来定义应用程序的主页。