symfony2上的路由和控制器之间的区别

时间:2015-12-23 23:59:47

标签: symfony controller routing

Hy,我真的不确定在这里问这个问题,但我想知道......

symfony2上的路由和控制器之间有区别吗?

如果我想要2个模块,我该如何编写我的应用程序:

  • 介绍
  • 博客

我应该同时添加路由和控制器吗?或者我可以将其编码为一个路由和两个控制器吗?

感谢您的定位!

问候。

好的,谢谢,澄清一下我的想法是,如果我有一个包含大量不同页面的大型项目,那就意味着我应该做大量不同的工作路线?

2 个答案:

答案 0 :(得分:1)

一种看似简单的方式:路由说明页面在哪里,控制器收集将在页面上传递的信息并将其发送到路由应该去的地方。关于Intro& amp;的直接问题对于每个控制器,您可能最好使用控制器(Controller docs)并为每个控制器路由(Routing docs)。

编辑以回答问题:

目前尚不清楚“一路由”是什么意思,但这听起来像是什么。 有一个控制器有两条路线。请查阅有关需要澄清的项目的文档和基本问题。

/**
 * MySiteController
 * @Route("/", name="home")
 *
 */
class MySiteController extends Controller
{
    /**
     * @Route("/intro")
     * @Template("MySite/intro.html.twig")
     */
    public function introAction()
    {
        //Create contents
        $contents = "blah blah";

        return array(
          'contents'  => $contents
        );
    }

    /**
     * @Route("/bog")
     * @Template("MySite/bog.html.twig")
     */

    public function blogAction()
    {
        $em= $this->getDoctrine()->getManager();
        $blog = $opportunities = $em->getRepository('MySiteBundle:Blog')->findAll();

        return array(
            'blog' => $blog,
        );
    }

答案 1 :(得分:1)

Routing简单来说就是你在浏览器URL中看到的,它是“资源”的路径,例如: - www.example.com/blog here blog是一个与Controller

控制器只是一个php可调用(比如一个方法),用于一个特定的作业,充当用户请求的内容和最终输出之间的连接,控制器获取用户的请求,通常请求是传递给一个名为services的不同的php对象,它只执行一个特定的任务,处理后的输出''response'被传递回控制器,控制器将它传递给'view'(比方说html)显示给用户

我想说有两个不同的控制器,其中包含几个“动作”,其中包含您可能编写的实际代码

// src/AppBundle/Controller/BlogController.php
namespace AppBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;

class BlogController extends Controller
{
    /**
     * @Route("/blog/{slug}", name="blog_show")
     */
    public function showAction($slug)
    {
        // ...
    }
}

// src/AppBundle/Controller/IntroController.php
namespace AppBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;

class IntroController extends Controller
{
    /**
     * @Route("/", name="intro")
     */
    public function introAction()
    {
        // ...
    }
}

通过一个路由,如果你的意思是www.example.com/blog/homepage和www.example.com/blog/loginpage,其中/ blog对于你可以使用前缀的所有页面都是常见的,请将此@Route("/blog")在类名称之上,该控制器中的所有路由都将以博客

作为前缀
// src/AppBundle/Controller/ExampleEController.php
namespace AppBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
/**
 * @Route('/example')
 */
class ExampleController extends Controller
{