我刚刚开始研究symfony2书.我想知道为什么我们命名控制器的功能Action:
public function [something]Action() { // ...
Run Code Online (Sandbox Code Playgroud)
在目前为止的书中的每个例子中,我在网上看到的所有代码Action都是函数名.它有什么理由吗?
这非常有效:
<?php
// src/AppBundle/Controller/LuckyController.php
namespace AppBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\JsonResponse;
class LuckyController extends Controller{
/**
* @Route("/lucky/number/{count}")
*/
public function countTESTING($count){
return new Response(
'<html><body>I DONT HAVE TO CALL THIS somethingACTION</body></html>
');
}
}
?>
Run Code Online (Sandbox Code Playgroud)
我试过googline这个,但我没有提到或推理为什么.有人可以解释为什么我们使用那个后缀?
Fed*_*kun 13
这只是一个惯例.您可以使用这些后缀,但也可以不使用它们.
如果你有
public function somethingAction()
Run Code Online (Sandbox Code Playgroud)
在控制器中,您可以通过以下方式在路由配置中引用它:
index:
path: /path_for_something
defaults: { _controller: AppBundle:Index:something }
Run Code Online (Sandbox Code Playgroud)
该_controller参数使用称为逻辑控制器名称的简单字符串模式.所以,AppBundle:Index:something意思是:
但是,如果没有此功能,您也可以这样做.Symfony非常灵活,它不会强迫你做任何事情.这只是你必须做同样事情的众多方法之一.
如果你采用这个约定,你就更容易理解action你的控制器中有哪些,其他开发人员很容易理解你的代码,symfony2更容易在你的包中找到你的动作/控制器,这样你也可以重写控制器.这是最佳做法.
但如果您不想要这些好处,您也可以使用其完全限定的类名和方法:
index:
path: /something
defaults: { _controller: AppBundle\Controller\IndexController::indexAction }
Run Code Online (Sandbox Code Playgroud)
但是,正如文件所说:
如果您遵循一些简单的约定,逻辑名称更简洁,并允许更多的灵活性.
| 归档时间: |
|
| 查看次数: |
1240 次 |
| 最近记录: |