我正在使用FOS Message Bundle,但看起来它无法识别以下方法:
$threads = $this->getProvider()->getInboxThreads();
我收到此错误消息:
Attempted to call an undefined method named "getProvider" of class "AppBundle\Controller\MessageController"
以下是控制器的代码:
namespace AppBundle\Controller;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use Symfony\Component\DependencyInjection\ContainerAware;
use Symfony\Component\HttpFoundation\RedirectResponse;
use FOS\MessageBundle\Provider\ProviderInterface;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
class MessageController extends ContainerAware
{
/**
* @Route("/messages/", name="messages_home")
*/
public function inboxAction()
{
$threads = $this->getProvider()->getInboxThreads();
return $this->container->get('templating')->renderResponse('inbox/inbox.html.twig', array(
'threads' => $threads
));
}
}
我怀疑它与我的使用有关,但我改变了它,这似乎没有帮助我......
答案 0 :(得分:0)
您只是尝试使用当前对象中的方法getProvider()
。 $this
是MessageController
扩展ContainerAware
的指针当前对象。如果这两个类(及其父级)都没有getProvider()
方法,则抛出是一个错误。
我看到你刚刚导入了use FOS\MessageBundle\Provider\ProviderInterface;
个实例。阅读FOSMessageBundle文档:
获取经过身份验证的用户::
的收件箱中的主题
$provider = $container->get('fos_message.provider');
$threads = $provider->getInboxThreads();
此外,您需要先在容器中注册提供者(请阅读Setting up FOSMessageBundle和Basic Usage of FOSMessageBundle上的详情。)