【发布时间】:2013-12-14 16:18:03
【问题描述】:
我有一个控制器类HomeController,它有一个特定的方法来获取Entity Manager。:
protected function getImageManager()
{
if(!isset($_SESSION)) session_start();
if(isset($_SESSION['id']))
{
if($em = $this->getDoctrine()->getEntityManager()) return $em;
}
return false;
}
当我在HomeController 中使用它时它可以工作。但是当我扩展控制器并尝试使用这种方法时,我得到一个错误:Fatal error: Call to a member function has() on a non-object in /home/xxxx/webDir/project/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Controller/Controller.php on line 191
这就是我在HomeController 和扩展控制器中使用此方法的方式:
if($em = $this->getImageManager())
...
这就是我扩展HomeController的方式:
namespace MSD\HomeBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use MSD\HomeBundle\Entity\Imagen as Imagen;
use MSD\HomeBundle\Controller\HomeController as HomeController;
class ImageTransController extends HomeController
{
function __construct()
{
if($em = $this->getImageManager()) return $this;
else $this->setError('Entity Manager error');
}
}
知道出了什么问题吗?
【问题讨论】:
-
HomeController没有任何构造方法。 -
它也属于我在您的新帖子中所说的依赖注入概念
标签: php symfony entitymanager