[英]How to call Controller from another folder via url Symfony 2?
我有以下文件夹结构(symfony 2应用程序):
src
|-- Application
| |-- UserBundle
| | |-- Admin
| | |-- Api
| | |-- SomeController.php
| | |-- Controller
| | |-- DefaultController.php
| | |-- DependencyInjection
| | |-- Entity
| | |-- Resources
| | |-- Tests
我想从Api文件夹中调用某些控制器。 我该怎么做?
UPD。
我使用symfony路由来提供控制器:
application_homepage:
path: /hello/{name}
defaults: { _controller: ApplicationUserBundle:Default:index }
application_some:
path: /api/{slug}
defaults: { _controller: ApplicationUserBundle:../Api/Some:index }
我想从Api文件夹加载控制器
如果控制器的命名空间为: Application\\UserBundle\\Api
,则className为SomeController
,且操作为indexAction
您可以在路由文件中使用以下语法:
application_some:
path: /api/{slug}
defaults: { _controller: Application\UserBundle\Api\SomeController::indexAction }
此解决方案也将起作用:
application_some:
resource: "@ApplicationUserBundle/Api"
type: annotation
要么:
application_some:
resource: "@ApplicationUserBundle/Api/SomeController.php"
type: annotation
参见http://symfony.com/doc/current/book/routing.html#include-external-routing-resources
如果两个控制器都位于同一个名称空间中,则只需
$controller = new ControllerInApiFolder();
$conotroller->someFunction();
如果它们没有,那么您需要通过使用声明包括控制器。
use Namespace\My\Controller\Sits\In\ControllerInApiFolder;
如果您尝试不是从另一个控制器而是从模板,URL或测试用例访问控制器,则应参考symfony2文档。
从上面的已编辑问题中,我认为您想通过url调用控制器。 在浏览器中,您只需输入
path/to/my/web/api/something
要么
path/to/my/web/app_dev.php/api/something
其中“ path / to / my / web”是指项目中Web文件夹的路径
编辑:我认为现在我遇到了问题... Symfony2路由始终默认为/ Controller文件夹以查找控制器(这是相当不错的)。
我不太确定您应该为此添加另一个文件夹。 相反,文档建议在/ Controller文件夹中包含多个文件夹。 如果查看此处显示的文件夹结构: Symfony2 Controller ,您会注意到/ Controller文件夹中有一个API文件夹。
<your-project>/
├─ ...
└─ src/
└─ AppBundle/
├─ ...
└─ Controller/
├─ DefaultController.php
├─ ...
├─ Api/
│ ├─ ...
│ └─ ...
└─ Backend/
├─ ...
└─ ...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.