2015-10-13 11:24
浏览 63


I'm trying to update a website(which is based on synfony2) and a database. I have created a new column in the database named 'serial_nr' and entered it in the entity file. Now when i try to add this column to a formbuilder I get this error:

Method "serial_nr" for object "Symfony\Component\Form\FormView" does not exist in 
AppBundle:Product:list.html.twig at line 31

This is the form:

<div class="control-group">
   <label{% for attrname,attrvalue in attr %} {{attrname}}="{{attrvalue}}"{% endfor %}>Name</label>

    <div class="controls">
<div class="control-group">
    <label{% for attrname,attrvalue in attr %} {{attrname}}="{{attrvalue}}"{% endfor %}>Serial number</label>

    <div class="controls">
        {{form_widget(form.serial_nr)}} <--------- line 31
<div class="control-group">
    <label{% for attrname,attrvalue in attr %} {{attrname}}="{{attrvalue}}"{% endfor %}>Price</label>

    <div class="controls">
         <div class="input-prepend">
             <span class="add-on">&euro;</span>

Here is the entity:

namespace AppBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

     * @var varchar $serial_nr
    private $serial_nr;

     * Set serial_nr
     * @param varchar $serial_nr
     * @return ProductRevision
    public function setserial_nr($serial_nr)
        $this->serial_nr = $serial_nr;

        return $this;

     * Get serial_nr
     * @return varchar 
    public function getserial_nr()
        return $this->serial_nr;

The controller action:

public function addAction(Request $request){
        $product = new Product();

        $form = $this->createForm(new ProductType($this->get('Doctrine')->getEntityManager()), $product);
        $errors = array();


            $revision = new ProductRevision();
            $revision->setDate(new DateTime(date("Y-m-d H:i:s")));

            $em = $this->getDoctrine()->getManager();
            $category = $em->getRepository('AppBundle:Category')->findOneBy(array('name' => $form->get("category")->getData()));

            // Make sure a valid category is entered!
            if($category == null){
                return $this->redirect("/categories/" . $_POST["product"]["categoryId"] . "/products");

            $validator = $this->get('validator');
            $errors = $validator->validate($revision);

            if($form->isValid() && count($errors) === 0){
                // Form is valid!
                $em = $this->getDoctrine()->getManager();


            } catch(Exception $e){
                return new Response($e->getMessage(), 200);

            return $this->redirect("/products/" . $product->getId() . "/show");

    return $this->render('AppBundle:Product:addproduct.html.twig', array('form' => $form->createView(), 'active' => "products", 'errors' => $errors));


There was a typo in the name of the $builder->add of serial_nr. This is how it was:

$builder->add("sreial_nr", "text", array('mapped' => false, "label" => "serial_nr"));

This is how it works:

 $builder->add("serial_nr", "text", array('mapped' => false, "label" => "serial_nr"));
  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

1条回答 默认 最新

  • duanpa1980 2015-10-13 11:35

    Should be:

    public function setSerial_nr($serial_nr)
    public function getSerial_nr()
    解决 无用
    打赏 举报

相关推荐 更多相似问题