У меня есть класс контроллера 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' не имеет какой-либо метод конструктов. – Manolo
Он также относится к той же концепции инъекции зависимостей, как я сказал в вашем новом сообщении –