Hy,我真的不确定在这里问这个问题,但我想知道......
symfony2上的路由和控制器之间有区别吗?
如果我想要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
{