繁体   English   中英

如何从控制器内部访问不同的控制器 Symfony2

[英]How to access a different controller from inside a controller Symfony2

我需要从另一个控制器内的不同控制器访问一个方法。 我该怎么做? 我可以使用this->get方法吗?

我可以将控制器包含在当前控制器中并为其创建一个对象并通过该对象访问该方法吗? 这样做“可以”吗?

我想调用另一个控制器的表单方法---newAction。

如果你不想把这个类定义为一个服务,因为它对我来说并不是一个好习惯,并且@Qoop引用了Fabien说的相同 ,你可以使用转发:

http://symfony.com/doc/current/controller/forwarding.html

public function indexAction($name)
{
    $response = $this->forward('AcmeHelloBundle:Hello:fancy', array(
        'name'  => $name,
        'color' => 'green',
    ));

    // ... further modify the response or return it directly

    return $response;
}

如果您需要在模板中嵌入内部控制器操作的输出, Symfony文档也有相应的内容。

您可以将控制器定义为服务,然后在另一个控制器中获取。

在您的services.yml定义所需的控制器作为服务:

services:
    your_service_name:
        class: YourCompany\YourBundle\Controller\YourController

然后在任何控制器中,您将能够通过容器获得此服务:

$yourController = $this->get('your_service_name');

在文档中有一些关于控制器作为服务的有用信息

你只需要在你所在的控制器中实例化你想要访问的控制器。

您所在的控制器:

*在 symfony 2/3 中,您可能需要放置“YourBundle”而不是“App”

..

use App\Controller\DefaultController; 

..

public function index()
{

    $default_controller = new DefaultController;
    $variable = 1;
    $default_controller->actionToCall($variable);

    return $this->render('...'); //The view you want to render or call another action
}

在控制器中调用:

public function actionToCall($variable)
{
    //dd($variable);        
}

完毕。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM