【发布时间】:2014-06-16 17:47:45
【问题描述】:
我是 Symfony 的新手,所以某些文档中的代码可能没有意义。不管怎样,我正在做一个网站,到目前为止,我在上面做了两个页面(我认为一个叫做“web”,另一个叫做“terms”)。但是,我不知道如何在路由方面访问第二页。这是我的代码:
1.条款控制器.php
<?php
namespace Acme\WebBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
class TermsController extends Controller
{
public function indexAction($some)
{
return $this->render('AcmeWebBundle:Terms:index.html.twig');
}
}
2。 /WebBundle/Resources/config/routing.yml
网络:
pattern: /web
defaults: { _controller: AcmeWebBundle:Default:index }
_术语:
pattern: /web/terms
resource: "@AcmeWebBundle/Controller/TermsController.php"
我应该通过 http://*/app_dev.php/web/terms 访问第二个页面,但出现错误。
* = 本地主机
【问题讨论】:
-
为什么你不使用默认值:{ _controller: AcmeWebBundle:Terms:index } for _term in route ?
-
我试过了。实际上,如果我删除 routing.yml 的“_terms”部分并只保留“web”路由,那么一切正常。如果我将“_terms”部分添加到 routing.yml 中,那么我无法同时访问“/web”和“/web/terms”
-
先插入 _terms: section 然后 web: section
-
我这样做了,它显示出某种改进。它把我带到了 Symfony 错误页面,而不是其他一些错误页面。我收到了这个严重错误:CRITICAL - Uncaught PHP Exception RuntimeException: "Controller "Acme\WebBundle\Controller\TermsController::indexAction()" 要求您为 "$some" 参数提供一个值(因为没有默认值或因为在这个之后有一个非可选参数)。”在 /Applications/MAMP/htdocs/Symfony/app/cache/dev/classes.php 第 2093 行
-
如果你不需要 $some,只需从 TermsController.php 的 indexAction($some) 中删除它