Unternehmens-id der Eltern ist nicht gespeichert in einer OneToMany-Beziehung in SonataAdmin

Ich bin mit SonataAdmin (und Symfony2) zur Verwaltung der Entitäten. Ich habe eine oneToMany Beziehung zwischen einem Schritt und viele Aufgaben. Seit einem Schritt enthalten kann, die viele Aufgaben, wenn ich einen Schritt, ich möchte in der Lage zu schaffen, viele Aufgaben und ich will diese Aufgaben werden verknüpft, um dieses Schritt. So zu tun, ich habe all die richtigen admin-Klassen (eine für die Aufgabe und eine für Schritt).

Hier ist, was ich Tue, dass mein problem. Wenn ich versuche, einen Schritt, ich kann es schaffen, die Aufgaben und auch neu anordnen, die ist toll und alles geschieht automatisch durch SonataAdminBundle. Wenn ich auf speichern ist alles in der Datenbank gespeichert, mit der Ausnahme, dass in der Datenbank die id der Schritt ist nicht in die Zeile der Aufgabe. Deshalb werden die Aufgaben nicht mit den Schritt...

Hier ist meine Schritt in der admin-Klasse:

<?php
//src/Acme/DemoBundle/Admin/PostAdmin.php

namespace IMA\ProcessManagementBundle\Admin;

use Sonata\AdminBundle\Admin\Admin;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
use Sonata\AdminBundle\Form\FormMapper;

class StepAdmin extends Admin
{
    //Fields to be shown on create/edit forms
    protected function configureFormFields(FormMapper $formMapper)
    {
        $formMapper
            ->add('name', 'text', array('label' => 'Nom de l\'étape'))

            ->add('tasks', 'sonata_type_collection', array(), array(
                'edit' => 'inline',
                'inline' => 'table',
                'sortable'  => 'positionNumber'
            ))
            ->add('positionNumber', 'integer', array('label' => 'Position'))
        ;
    }

    //Fields to be shown on filter forms
    protected function configureDatagridFilters(DatagridMapper $datagridMapper)
    {
        $datagridMapper
            ->add('name')

        ;
    }

    //Fields to be shown on lists
    protected function configureListFields(ListMapper $listMapper)
    {
        $listMapper
            ->addIdentifier('name')
            ->add('slug')
        ;
    }
}

Hier ist auch meine Aufgabe-admin-class:

<?php
//src/Acme/DemoBundle/Admin/PostAdmin.php

namespace IMA\ProcessManagementBundle\Admin;

use Sonata\AdminBundle\Admin\Admin;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
use Sonata\AdminBundle\Form\FormMapper;

class TaskAdmin extends Admin
{
    //Fields to be shown on create/edit forms
    protected function configureFormFields(FormMapper $formMapper)
    {
        $formMapper
            ->add('name', 'text', array('label' => 'Tâche'))
            ->add('positionNumber', 'integer', array('label' => 'Position'))

        ;
    }

    //Fields to be shown on filter forms
    protected function configureDatagridFilters(DatagridMapper $datagridMapper)
    {
        $datagridMapper
            ->add('name')

        ;
    }

    //Fields to be shown on lists
    protected function configureListFields(ListMapper $listMapper)
    {
        $listMapper
            ->addIdentifier('name')
            ->add('slug')
        ;
    }
}

Auch hier sind die Beschreibung der Entitäten

IMA\ProcessManagementBundle\Entity\Step:
    type: entity
    table: null
    fields:
        id:
            type: integer
            id: true
            generator:
                strategy: AUTO
        name:
            type: string
            length: 255
        positionNumber:
            type: integer


    oneToMany:
        tasks:
            targetEntity: Task
            mappedBy: step
            cascade: ["persist", "merge"]

    lifecycleCallbacks: {  }


IMA\ProcessManagementBundle\Entity\Task:
    type: entity
    table: null
    fields:
        id:
            type: integer
            id: true
            generator:
                strategy: AUTO
        name:
            type: string
            length: 255
        positionNumber:
            type: integer


    manyToOne:
        step:
            targetEntity: Step
            inversedBy: tasks


    lifecycleCallbacks: {  }

Frage ich mich, warum die id der Schritt ist nicht in der Task-Zeile...

InformationsquelleAutor CoachNono | 2014-01-29
Schreibe einen Kommentar