我在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中执行此操作的最佳/可接受方式是什么?
答案 0 :(得分:1)
您在Symfony2中执行此操作的方式与使用任何PHP类完全相同。将您的类拆分为单独的文件,如下所示: -
的src / Zetcho / AmColAnBundle /控制器/ 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 /控制器/ 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类,没有什么特别之处。