【发布时间】:2017-01-12 17:13:01
【问题描述】:
我是 Symfony 2 的新手。
我在个性化实体存储库中有一个名为“addNewTarjeta”的函数。
<?php
namespace Elkanogroup\ClientesBundle\Repository;
/**
* ClienteRepository
*
* This class was generated by the Doctrine ORM. Add your own custom
* repository methods below.
*/
class ClienteRepository extends \Doctrine\ORM\EntityRepository {
/**
* Asigna una tarjeta a este cliente.
*/
public function addNewTarjeta(Cliente $cliente) {
$tarjeta = new \Elkanogroup\ClientesBundle\Entity\Tarjeta();
$tarjeta->setNumeroTarjeta('5555 5555 5555 5555');
$tarjeta->setCliente($cliente);
$tarjeta->setFechaExpedicion(new \DateTime());
$em = $this->getDoctrine()->getManager();
$em->persist($tarjeta);
$flush = $em->flush();
if ($flush != null) {
return false;
}
return true;
}
我有一个监听器在等待一个教义事件 postPersist。我想从 postPersist 函数调用“addNewTarjeta”。
我正在尝试做这样的事情:
<?php
namespace Elkanogroup\ClientesBundle\EventListener;
use Doctrine\ORM\Event\LifecycleEventArgs;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Elkanogroup\ClientesBundle\Entity\Cliente;
use Elkanogroup\ClientesBundle\Repository\ClienteRepository;
class ClienteListener {
public function postPersist(Cliente $cliente, LifecycleEventArgs $args) {
$cliente->addNewTarjeta($cliente);
}
但它不起作用。 Symfony 说:
试图调用类的名为“addNewTarjeta”的未定义方法 “Elkanogroup\ClientesBundle\Entity\Cliente”。
谁能帮帮我??感谢和抱歉我的英语不好。
【问题讨论】:
-
您需要将教义注入您的侦听器类。
-
谢谢,我是初学者,我该怎么做?
-
就像 Oscar Pérez 在他的回答中所展示的那样。 ;-)
-
您也可以阅读文档...
标签: php symfony doctrine-orm listener