在smyfony的路由页面上有一个路由示例(第一个)。现在他们给了我们4种代码选项(annotation, YAML, XML, PHP)。区别在哪里?也许你可以看看我的Controller + Route
。
控制器看起来像这样:
<?php
namespace AppBundle'Controller;
use Symfony'Bundle'FrameworkBundle'Controller'Controller;
use Sensio'Bundle'FrameworkExtraBundle'Configuration'Route;
class ToDoListController extends Controller
{
/**
* @Route("/ToDoList", name="ToDoList")
*/
public function showToDoList()
{
}
}
?>
现在我也将这条路线添加到routing.yml
中。
ToDoList:
path: /Aufgabenliste
defaults: {_controller: AppBundle'Controller 'ToDoListController::showToDoList}
正确吗?路径呢?在symfony页面的第一个例子中,他们写的是defaults: { _controller: AppBundle:Blog:show }
,但在描述中他们写的是:
_controller字符串称为逻辑名。它遵循一个指向特定PHP类和方法的模式,在本例中是AppBundle'Controller'BlogController::listAction和AppBundle'Controller'BlogController::showAction方法。
好的。在Symfony中,你可以选择不同的路由方法。例如,您可以通过注释或yml来实现这一点(我以前使用yml,但现在我改用注释)。唯一的区别是……文件格式;)例如,我非常喜欢使用注释,因为与其在一个文件中有10亿个条目,不如将每个路径都放在它所指向的代码旁边。在这一点上,这取决于你更喜欢什么。然而,我认为使用注释被认为是一个很好的实践。
<?php
namespace AppBundle'Controller;
use Symfony'Bundle'FrameworkBundle'Controller'Controller;
use Sensio'Bundle'FrameworkExtraBundle'Configuration'Route;
class ToDoListController extends Controller
{
/**
* @Route("/ToDoList", name="ToDoList")
*/
public function showToDoList()
{
}
}
?>
上面的代码没问题——您使用了所需的名称空间并创建了正确的注释。所有这些都必须在你正在开发的bundle中完成。你还得去app/config/routing。然后像这样写:
YourBundleName:
resource: "@YouBundle/Controller/"
type: annotation
当然这只是一个例子,你需要根据你的需要进行调整。这样你就是在告诉Symfony你想要使用注解