2017-06-10 11 views
1

次のように私は2つのエンティティを持って次のようにsymfonyの3.3 ContextErrorException

<?php 
// src/coreBundle/Entity/model.php 
namespace coreBundle\Entity; 
use Doctrine\ORM\Mapping as ORM; 
use coreBundle\Entity\brand; 

/** 
*@ORM\Entity 
*@ORM\Table(name="model") 
*/ 
class model 
{ 
    /** 
    * @ORM\ManyToOne(targetEntity="brand", inversedBy="models") 
    * @ORM\JoinColumn(name="brand_id", referencedColumnName="id") 
    */ 
    private $brands; 

2つ目は、次のとおりです。

<?php 
// src/coreBundle/Entity/brand.php 
namespace coreBundle\Entity; 
use Doctrine\ORM\Mapping as ORM; 
use coreBundle\Entity\model; 
use Doctrine\Common\Collections\ArrayCollection; 

/** 
*@ORM\Entity 
*@ORM\Table(name="brand") 
*/ 
class brand 
{ 
    /** 
    * ORM\OneToMany(targetEntity="model", mappedBy="brands") 
    */ 
    private $models; 
    public function __construct() 
    { 
     $this->models = new ArrayCollection(); 
    } 

今私のコントローラでは、私はコード

public function createBrandFormAction() 
    { 
     $brand = new brand(); 
     $form = $this->createFormBuilder($brand) 
     ->add('name',TextType::class,array('label'=>'Brand Name')) 
     ->add('save',SubmitType::class, array('label'=>'Add Brand')) 
     ->getForm(); 

     $form->handleRequest($request); 
     if ($form->isSubmitted() && $form->isValid()) { 
     // perform some action, such as saving the task to the database 

      $em = $this->getDoctrine()->getManager(); 
      $brand = $form->getData(); 
      $em->persist($brand); 
      $em->flush(); 
      return $this->render('coreBundle:layouts:newBrand.html.twig', 
       array('form'=>$form->createView(),)); 
     } 

     return $this->render('coreBundle:layouts:newBrand.html.twig', 
      array('form'=>$form->createView(),)); 
    } 

を以下していますコントローラを実行している間、私は例外に従っています

Catchable Fatal Error: Argument 1 passed to Symfony\Component\HttpFoundation\Session\Attribute\AttributeBag::initialize() must be of the type array, object given, called in C:\ledger\var\cache\dev\classes.php on line 248 and defined

「モデル」

を「ブランド」とManyToOne関係を持っているあなたは、私が間違って何をやっている事前に感謝を伝えることができます。もう一つの理由は、キャッチできる致命的なエラーが発生している可能性が

ContextErrorException 
Symfony\Component\Debug\Exception\ContextErrorException: 
Catchable Fatal Error: Argument 1 passed to Symfony\Component\HttpFoundation\Session\Attribute\AttributeBag::initialize() must be of the type array, object given, called in C:\ledger\var\cache\dev\classes.php on line 248 and defined 

    at vendor\symfony\symfony\src\Symfony\Component\HttpFoundation\Session\Attribute\AttributeBag.php:57 
    at Symfony\Component\HttpFoundation\Session\Attribute\AttributeBag->initialize(object(Stub)) 
    (var\cache\dev\classes.php:248) 
    at Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage->loadSession() 
    (var\cache\dev\classes.php:116) 
    at Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage->start() 
    (var\cache\dev\classes.php:192) 
    at Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage->getBag('attributes') 
    (var\cache\dev\classes.php:540) 
    at Symfony\Component\HttpFoundation\Session\Session->getAttributeBag() 
    (var\cache\dev\classes.php:459) 
    at Symfony\Component\HttpFoundation\Session\Session->get('_security_main') 
    (vendor\symfony\symfony\src\Symfony\Component\Security\Http\Firewall\ContextListener.php:83) 
    at Symfony\Component\Security\Http\Firewall\ContextListener->handle(object(GetResponseEvent)) 
    (var\cache\dev\classes.php:4700) 
    at Symfony\Component\Security\Http\Firewall->onKernelRequest(object(GetResponseEvent)) 
    (vendor\symfony\symfony\src\Symfony\Bundle\SecurityBundle\EventListener\FirewallListener.php:48) 
    at Symfony\Bundle\SecurityBundle\EventListener\FirewallListener->onKernelRequest(object(GetResponseEvent)) 
    (var\cache\dev\appDevDebugProjectContainer.php:783) 
    at appDevDebugProjectContainer->{closure}(object(GetResponseEvent), 'kernel.request', object(TraceableEventDispatcher)) 
    at call_user_func(object(Closure), object(GetResponseEvent), 'kernel.request', object(TraceableEventDispatcher)) 
    (vendor\symfony\symfony\src\Symfony\Component\EventDispatcher\Debug\WrappedListener.php:112) 
    at Symfony\Component\EventDispatcher\Debug\WrappedListener->__invoke(object(GetResponseEvent), 'kernel.request', object(ContainerAwareEventDispatcher)) 
    at call_user_func(object(WrappedListener), object(GetResponseEvent), 'kernel.request', object(ContainerAwareEventDispatcher)) 
    (var\cache\dev\classes.php:3429) 
    at Symfony\Component\EventDispatcher\EventDispatcher->doDispatch(array(object(WrappedListener), object(WrappedListener), object(WrappedListener), object(WrappedListener), object(WrappedListener), object(WrappedListener), object(WrappedListener)), 'kernel.request', object(GetResponseEvent)) 
    (var\cache\dev\classes.php:3344) 
    at Symfony\Component\EventDispatcher\EventDispatcher->dispatch('kernel.request', object(GetResponseEvent)) 
    (vendor\symfony\symfony\src\Symfony\Component\EventDispatcher\Debug\TraceableEventDispatcher.php:146) 
    at Symfony\Component\EventDispatcher\Debug\TraceableEventDispatcher->dispatch('kernel.request', object(GetResponseEvent)) 
    (var\cache\dev\classes.php:4380) 
    at Symfony\Component\HttpKernel\HttpKernel->handleRaw(object(Request), 1) 
    (var\cache\dev\classes.php:4350) 
    at Symfony\Component\HttpKernel\HttpKernel->handle(object(Request), 1, true) 
    (vendor\symfony\symfony\src\Symfony\Component\HttpKernel\Kernel.php:171) 
    at Symfony\Component\HttpKernel\Kernel->handle(object(Request)) 
    (web\app_dev.php:30) 
    at require('C:\\ledger\\web\\app_dev.php') 
    (vendor\symfony\symfony\src\Symfony\Bundle\WebServerBundle\Resources\router.php:42) 
+0

エラーはあなたのコードとは関係ありません。完全なスタックトレースを貼り付けることはできますか? –

+1

代わりに質問を編集できましたが、これはほとんど判読できません。そして、誰にとっても簡単ではありません。キャッシュとは別に、bin/console cache:clearを試して、違いがあるかどうか確認してください。あなたのエンティティのマッピングにエラーがある場合、排除する可能性のある 'bin/console doctrine:schema:validate'もあります。また、アソシエーションを使用する場合、mappedBy/inversedByはクラスではなくプロパティです。あなたの完全なコード)が、あなたは後者をしようとしている可能性があります。 –

+0

@JennevanderMeerマップされた&反転されたプロパティを更新しました。どうぞご覧ください。あなたが言及したように、スキーマの検証の問題を抱えています*アソシエーションcoreBundle \ Entity \ model#ブランドは、存在しない逆サイドフィールドcoreBundle \ Entity \ brand#モデルを参照します –

答えて

0

スタックトレースは以下の通りである私は同じ問題を抱えている、と見つける、コントローラはUTF8でエンコードされなかったこと。エンコードをutf8に変更し、キャッシュをクリアしました。エラーは再び発生しません。

関連する問題