【问题标题】:symfony2 demo application change homepagesymfony2 演示应用程序更改主页
【发布时间】:2015-10-09 22:18:55
【问题描述】:

我学习了一个 symfony2,我会尝试在 symfony 演示应用程序(博客)中更改启动页面的路径。而是 FrameworkBundle:Template:template 控制器与静态页面 default/homepage.html.twig 我想更改路由到 AppBundle:Blog:index 但是我有以下错误:

Controller "AppBundle\Controller\BlogController::indexAction()" 要求您为 "$page" 参数提供一个值(因为没有默认值或者因为在此参数之后有一个非可选参数)。

还有一个方法代码:

 /**
 * @Route("/", name="blog_index", defaults={"page" = 1})
 * @Route("/page/{page}", name="blog_index_paginated", requirements={"page" : "\d+"})
 */
public function indexAction($page)
{
    $query = $this->getDoctrine()->getRepository('AppBundle:Post')->queryLatest();

    $paginator = $this->get('knp_paginator');
    $posts = $paginator->paginate($query, $page, Post::NUM_ITEMS);
    $posts->setUsedRoute('blog_index_paginated');

    return $this->render('blog/index.html.twig', array('posts' => $posts));
}

app/config/routing.yml

app:
    resource: @AppBundle/Controller/
    type:     annotation
    prefix:   /{_locale}
    requirements:
        _locale: %app_locales%
    defaults:
        _locale: %locale%
homepage:
    path: /{_locale}
    requirements:
        _locale: %app_locales%
    defaults:
        _controller: AppBundle:Blog:index
        #_controller: FrameworkBundle:Template:template
        #template:    'default/homepage.html.twig'
        _locale:     "%locale%"

我知道,我可以更改参数“$page = 1”,但我认为它很难解决。任何人都可以帮助我吗?

【问题讨论】:

    标签: php symfony


    【解决方案1】:

    您可以使用defaults 键传递默认参数值:

    homepage:
        path: /{_locale}
        requirements:
            _locale: %app_locales%
        defaults:
            _controller: AppBundle:Blog:index
            _locale: "%locale%"
            page: 1
    

    【讨论】:

    • 但我在注释 @Route("/", name="blog_index", defaults={"page" = 1}) 中有默认值 defaults={"page" = 1} 为什么我有写两次?
    • 这些是完全不同的路由配置,彼此无关。因此它们不共享任何路由配置参数。它们唯一的共同点是它们都会触发同一个控制器的执行。
    【解决方案2】:

    你可以试试这个注解

    /**
     * @Route(
     *  path = "/page/{page}", 
     *  name = "blog_index",
     *  defaults = {"page" = 1}, 
     *  requirements={"page" : "\d+"}
     * )
     */
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-12
      • 2011-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-28
      相关资源
      最近更新 更多