2016-08-31 15 views
-2

私はSymfony 3で新しく、単純なWebアプリケーションを実装しています。エラーを私はフォームからデータを取得しようとしているが、要求を取得し、エンティティマネージャのインスタンスにデータを入れたときに私が得た、私はコードを説明しましょう:Symfony 3注意:クラスDoctrine ORM EntityManagerのオブジェクトをintに変換できません

これはコントローラである(DefaultController)

namespace Database\TestBundle\Controller; 

use Symfony\Bundle\FrameworkBundle\Controller\Controller; 
use Symfony\Component\HttpFoundation\Request; 
use Database\TestBundle\Entity\Products; 

use Symfony\Component\Form\Extension\Core\Type\TextType; 
use Symfony\Component\Form\Extension\Core\Type\TextareaType; 
use Symfony\Component\Form\Extension\Core\Type\IntegerType; 
use Symfony\Component\Form\Extension\Core\Type\DateType; 
use Symfony\Component\Form\Extension\Core\Type\SubmitType; 

class DefaultController extends Controller 
{ 
    public function addAction(Request $request) 
    { 
    $product = new Products(); 

    $form = $this->createFormBuilder($product) 
       ->add('name', TextType::class) 
       ->add('price', TextType::class) 
       ->add('description', TextareaType::class) 
       ->add('save', SubmitType::class, array('label' => 'Save Product')) 
       ->getForm(); 

    $form->handleRequest($request); 

    if($form->isValid()) 
    { 
     $product = $form->getData(); 

     $em = $this->getDoctrine()->getManager(); 
     $em->persist($product); 
     $em-flush(); //I got the error in this line 

     return $this->redirect($this->generateUrl('database_test_list')); 
    } 

    return $this->render('DatabaseTestBundle:Default:add.html.twig', array(
    'form' => $form->createView())); 
} 
} 

これは

{% extends '::frontend.html.twig' %} 
{% block title %}List of Products{% endblock %} 

{% block body %} 
<h1 class="clase">Add Product</h1> 
<hr> 

<a href="{{asset('test/list')}}" class="btn btn-warning" title="Return to list">Return to list</a> 

<br/> 
<br/> 

{{ form_start(form, {'attr': {'class': 'form-horizontal'}}) }} 
<div class="row"> 
    <div class="col-sm-12"> 
     <div class="form-group"> 
      <label class="col-sm-1 control-label required" for="form_name">Name</label> 
      <div class="col-sm-3"> 
       {{form_widget(form.name, {'attr': {'class': 'form-control col-md-12'}})}} 
      </div> 
     </div> 

     <div class="form-group"> 
      <label class="col-sm-1 control-label required" for="form_price">Price</label> 
      <div class="col-sm-3"> 
       {{form_widget(form.price, {'attr': {'class': 'form-control col-md-12'}})}} 
      </div> 
     </div> 

     <div class="form-group"> 
      <label class="col-sm-1 control-label required" for="form_description">Description</label> 
      <div class="col-sm-3"> 
       {{form_widget(form.description, {'attr': {'class': 'form-control col-md-12'}})}} 
      </div> 
     </div> 

     <hr/> 
     {{form_widget(form.save, {'attr': {'class': 'btn btn-default'}})}} 
     </p> 

    </div> 
</div> 
{{ form_end(form) }} 

{% endblock %} 

そして目(追加)これが私の見解である私のエンティティ(製品)

namespace Database\TestBundle\Entity; 

/** 
* Products 
*/ 
class Products 
{ 
/** 
* @var int 
*/ 
private $id; 

/** 
* @var string 
*/ 
private $name; 

/** 
* @var int 
*/ 
private $price; 

/** 
* @var string 
*/ 
private $description; 

/** 
* Get id 
* 
* @return int 
*/ 
public function getId() 
{ 
    return $this->id; 
} 

/** 
* Set name 
* 
* @param string $name 
* 
* @return Products 
*/ 
public function setName($name) 
{ 
    $this->name= $name; 

    return $this; 
} 

/** 
* Get name 
* 
* @return string 
*/ 
public function getName() 
{ 
    return $this->name; 
} 

/** 
* Set price 
* 
* @param integer $price 
* 
* @return Products 
*/ 
public function setPrice($price) 
{ 
    $this->price= $price; 

    return $this; 
} 

/** 
* Get price 
* 
* @return int 
*/ 
public function getPrice() 
{ 
    return $this->price; 
} 

/** 
* Set description 
* 
* @param string $description 
* 
* @return Products 
*/ 
public function setDescription($description) 
{ 
    $this->description= $description; 

    return $this; 
} 

/** 
* Get description 
* 
* @return string 
*/ 
public function getDescription() 
{ 
    return $this->description; 
} 
} 

ですはエラーメッセージです:

Stack Trace 

in src\Database\TestBundle\Controller\DefaultController.php at line 48 

46  $em = $this->container->get('doctrine')->getManager(); 
47  $em->persist($product); 
48  $em-flush(); 
49  return $this->redirect($this->generateUrl('database_test_list')); 

at ErrorHandler ->handleError ('8', 'Object of class Doctrine\ORM\EntityManager could not be converted to int', 
'C:\xampp\htdocs\taller_symfony\src\Database\TestBundle\Controller\DefaultController.php', '48', array('request' => object(Request), 'producto' => object(Productos), 'form' => object(Form), 'em' => object(EntityManager))) 
in src\Database\TestBundle\Controller\DefaultController.php at line 48 

誰かがこのエラーについて考えていますか?誰でも私にこの手を差し伸べることができます、ありがとうございます。

答えて

1

構文エラーがあります。>記号がありません。

あなたが持っている:

$em-flush(); 

それがされるべきである:それはあなたがそれを期待して、実際に正しいPHPの文法ではなく、1ですので、

$em->flush(); 

PHPは構文エラーになりませんでしたさあ。オブジェクトに対して算術演算(減算)を行おうとしました。

+0

ありがとうございます。 –

+0

私は同じ間違いを何度も繰り返しました! –

関連する問題