【问题标题】:Symfony2: how to access second page?Symfony2:如何访问第二页?
【发布时间】: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) 中删除它

标签: symfony web


【解决方案1】:

如果 TermsController 的 indexAction 与您指定的完全相同,那么为什么要使用 $same 参数?正是因为这个,你得到了一个错误。

您应该从 TermsController 中的 indexAction 中删除 $some 或在您的路由配置中为 $some 指定默认值。类似的东西:

_terms:
   path: /web/terms/{some}
   defaults:
       _controller: AcmeWebBundle:Terms:index
       some: ''

或者如果你不使用路由参数:

_terms:
   path: /web/terms
   defaults:
       _controller: AcmeWebBundle:Terms:index

您可以查看Symfony2 routing 文档。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-31
    • 1970-01-01
    • 2021-07-31
    相关资源
    最近更新 更多