次のように私は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)
エラーはあなたのコードとは関係ありません。完全なスタックトレースを貼り付けることはできますか? –
代わりに質問を編集できましたが、これはほとんど判読できません。そして、誰にとっても簡単ではありません。キャッシュとは別に、bin/console cache:clearを試して、違いがあるかどうか確認してください。あなたのエンティティのマッピングにエラーがある場合、排除する可能性のある 'bin/console doctrine:schema:validate'もあります。また、アソシエーションを使用する場合、mappedBy/inversedByはクラスではなくプロパティです。あなたの完全なコード)が、あなたは後者をしようとしている可能性があります。 –
@JennevanderMeerマップされた&反転されたプロパティを更新しました。どうぞご覧ください。あなたが言及したように、スキーマの検証の問題を抱えています*アソシエーションcoreBundle \ Entity \ model#ブランドは、存在しない逆サイドフィールドcoreBundle \ Entity \ brand#モデルを参照します –