Cita:
Iniciado por SirDuque Perdon lei mal el Post....
Fijate dentro del if $form->isValid() si el getParentBranch() devuelve null, antes del persist. Si devuelve null, fijate el $form la estaria seteando en null.
He borrado todos los setters y getters de la entidad BRANCH, y los he creado por consola nuevamente, ahora parece funcionar, algo había mal en los setters, pero no sabría por desgracia decir que es lo que era
.
Falsa alarma, sigue petando:
Cita: An exception occurred while executing 'INSERT INTO Branch (book_id, parent_branch, phrase, creator_uid, level) VALUES (?, ?, ?, ?, ?)' with params [{}, {}, "una rama nueva", 22, 1]:
Si hago dentro del $form_isValid() un var_
dump($branch); obtengo esto:
Cita: object(Branch\MainBundle\Entity\Branch)[352] private 'id' => null private 'book_id' => object(Branch\MainBundle\Entity\Book)[354] protected 'branches' => object(Doctrine\ORM\PersistentCollection)[355] private 'snapshot' => array (size=0) ... private 'owner' => &object(Branch\MainBundle\Entity\Book)[354] private 'association' => array (size=15) ... private 'em' => object(Doctrine\ORM\EntityManager)[277] ... private 'backRefFieldName' => string 'book' (length=4) private 'typeClass' => object(Doctrine\ORM\Mapping\ClassMetadata)[287] ... private 'isDirty' => boolean false private 'initialized' => boolean false private 'coll' => object(Doctrine\Common\Collections\ArrayCollection )[356] ... private 'id' => int 1 private 'title' => string 'Eres se una vez un libro público escrito por lo habitantes de un planeta llamado tierra.' (length=89) private 'description' => string 'Libro público escrito por todas las personas que lo desean.' (length=60) private 'public' => int 1 private 'maxLevel' => int 1 private 'parent_branch' => object(Branch\MainBundle\Entity\Branch)[326] private 'id' => int 1 private 'book_id' => int 1 private 'parent_branch' => int 0 private 'phrase' => string 'Es la primera rama' (length=18) private 'creatorUid' => int 1 private 'level' => int 0 private 'phrase' => string 'Es la primera rama' (length=18) private 'creatorUid' => int 1 private 'level' => int 1
La clase que genera el form es esta (igual esto es lo que está mal).
Código PHP:
Ver original<?php
// src/Branch/MainBundle/Form/Phrase/NewPhrase.php
namespace Branch\MainBundle\Form\Phrase;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
class NewPhrase extends AbstractType
{
public function buildForm
(FormBuilderInterface
$builder, array $options) {
$builder
->add('phrase', 'text', array('label' => 'My phrase', 'max_length' => 500)) ->add('parentBranch', 'entity', array( 'class' => 'BranchMainBundle:Branch',
))
->add('bookId', 'entity', array( 'class' => 'BranchMainBundle:Book',
))
->add('creatorUid', 'integer')
->add('save', 'submit');
}
// unique identifier for this form.
public function getName()
{
return 'phrase';
}
}
Mil gracias