0

我在 Symfony 2 控制器中设置了一个测试父类,如下所示:

<?php

namespace Zetcho\AmColAnBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;

class BaseController extends Controller
{
    public function validateUser()
    {
        $user['first_name'] = "Name";
        $user['signin'] = true;
        return $user;
    }
}
class DefaultController extends BaseController
{
    public function indexAction()
    {
        $user = $this->validateUser();
        $displayParms['user'] = $user;
        return $this->render('ZetchoAmColAnBundle:Default:index.html.twig',$displayParms);
    }
}

代码在 src/Zetcho/AmColAnBundle/Controller/DefaultController.php 测试代码有效。我现在想将父类(BaseController)从控制器文件中移到它自己的文件中,这样我就可以在我的其他控制器中重用它。我想把它放在与其他控制器相同的目录中,并且我想以与上面 use 语句中的 Controller 相同的方式声明它。在 Symfony 2 中最好/公认的方法是什么?

4

1 回答 1

1

您在 Symfony2 中执行此操作的方式与使用任何 PHP 类的方式完全相同。将您的类拆分为单独的文件,如下所示:-

src/Zetcho/AmColAnBundle/Controller/BaseController.php

namespace Zetcho\AmColAnBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;

class BaseController extends Controller
{
    public function validateUser()
    {
        $user['first_name'] = "Name";
        $user['signin'] = true;
        return $user;
    }
}

src/Zetcho/AmColAnBundle/Controller/DefaultController.php

namespace Zetcho\AmColAnBundle\Controller;

use Zetcho\AmColAnBundle\Controller\BaseController;

class DefaultController extends BaseController
{
    public function indexAction()
    {
        $user = $this->validateUser();
        $displayParms['user'] = $user;
        return $this->render('ZetchoAmColAnBundle:Default:index.html.twig',$displayParms);
    }
}

一旦你知道如何,它真的很简单。请记住,symfony2 中的控制器只是普通的 PHP 类,它们并没有什么特别之处。

于 2013-03-26T19:42:41.453 回答