2016-08-31 3 views
0

FOSMessageBundleを使用しているときに私のコードでちょっと詰まっています。 私はFOSMessageBundleが例外をスローする "メッセージはNewThreadMessageインスタンスでなければなりません" CBundle Entity Message NewThreadMessage "given"

/** 
* Create a new message thread 
* 
* @return Response 
*/ 
public function newThreadAction() 
{ 
    $form=$this->container->get('fos_message.new_thread_form.factory')->create(); 
    $formHandler=$this->container->get('fos_message.new_thread_form.handler'); 

    if ($message = $formHandler->process($form)) { 
     return new RedirectResponse($this->container->get('router')->generate('fos_message_thread_view', array(
      'threadId' => $message->getThread()->getId() 
     ))); 
    } 

    return $this->container->get('templating')->renderResponse('CBundle:Message:start.html.twig', array(
     'form' => $form->createView(), 
     'data' => $form->getData() 
    )); 

} 

ようnewThreadActionを持っており、私のフォームハンドラが

namespace CBundle\Form\Handler; 
use FOS\MessageBundle\FormModel\AbstractMessage; 
use CBundle\Entity\Messsage\NewThreadMessage; 
use FOS\MessageBundle\FormHandler\NewThreadMessageFormHandler as cBaseHandler; 
class NewThreadMessageFormHandler extends cBaseHandler 
{ 
    /** 
     * Composes a message from the form data 
     * 
     * @param AbstractMessage $message 
     * @return MessageInterface the composed message ready to be sent 
     * @throws InvalidArgumentException if the message is not a NewThreadMessage 
     */ 
public function composeMessage(AbstractMessage $message) 
{ 
    if (!$message instanceof NewThreadMessage) { 
    // if (!$message instanceof NewThreadMessage) { 
     throw new \InvalidArgumentException(sprintf('Message must be a NewThreadMessage instance, "%s" given', get_class($message))); 
    } 

    return $this->composer->newThread() 
     // ->setSubject($message->getSubject()) 
     ->setSubject(" ") 
     ->addRecipient($message->getRecipient()) 
     ->setSender($this->getAuthenticatedParticipant()) 
     ->setBody($message->getBody()) 
     ->getMessage(); 
} 

} 私は、メッセージのフォームを送信する場合ので、私は

Message must be a NewThreadMessage instance, "CBundle\Entity\Message\NewThreadMessage" given 

私のようなエラーを得ていますconfig.ymlは

fos_message: 
    db_driver: orm 
    thread_class: AppBundle\Entity\Message\Thread 
    message_class: AppBundle\Entity\Message\Message 
    new_thread_form: 
     type: app_user_new_thread.new_thread_form.type 
     handler: app_user_new_thread_form.handler 
     # handler: fos_message.new_thread_form.handler 
     # model: FOS\MessageBundle\FormModel\NewThreadMessage 
     model: CBundle\Entity\Message\NewThreadMessage 
     # validation_groups: [ConnThread] 

私に助けてあらかじめ感謝してください

+0

paramsに '%fos_message.new_thread_form.model%'を設定しましたか? – mmmm

答えて

0

私は問題を自分で見つけました。付属のクラスのパスを見てくださいそれはので、私はuse CBundle\Entity\Message\NewThreadMessage; としてのステートメントを使用したい use文で間違ったパスであるしかし、私はuse CBundle\Entity\Messsage\NewThreadMessage;のようにそれをしなかった質問を見たすべての人に

おかげ

関連する問題