Symfony 2:调用未定义的方法

时间:2015-12-28 23:43:14

标签: php symfony

我正在使用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
        ));
    }
}

我怀疑它与我的使用有关,但我改变了它,这似乎没有帮助我......

1 个答案:

答案 0 :(得分:0)

您只是尝试使用当前对象中的方法getProvider()$thisMessageController扩展ContainerAware的指针当前对象。如果这两个类(及其父级)都没有getProvider()方法,则抛出是一个错误。

我看到你刚刚导入了use FOS\MessageBundle\Provider\ProviderInterface;个实例。阅读FOSMessageBundle文档:

  

获取经过身份验证的用户::

的收件箱中的主题
$provider = $container->get('fos_message.provider');
$threads = $provider->getInboxThreads();

此外,您需要先在容器中注册提供者(请阅读Setting up FOSMessageBundleBasic Usage of FOSMessageBundle上的详情。)