Symfony2: le remplacement des créeaction() dans SonataAdmin

J'ai cherché sur google comme un fou les derniers jours à essayer de comprendre (sans succès) comment remplacer un SonataAdmin d'action pour la capture de la session nom d'utilisateur et de l'enregistrer dans le champ de clé étrangère.

AttachmentAdminController classe:

<?php

namespace Application\Sonata\UserBundle\Controller;

use Sonata\AdminBundle\Controller\CRUDController as Controller;
#use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use FOS\UserBundle\Entity\User;
use Symfony\Component\Security\Core\SecurityContextInterface;
use Symfony\Bridge\Monolog\Logger;
use Mercury\CargoRecognitionBundle\Entity\Attachment;

class AttachmentAdminController extends Controller
{
    /**
     * (non-PHPdoc)
     * @see Sonata\AdminBundle\Controller.CRUDController::createAction()
     */
    public function createAction()
    {
        $result = parent::createAction();

        if ($this->get('request')->getMethod() == 'POST')
        {
            $flash = $this->get('session')->getFlash('sonata_flash_success');

            if (!empty($flash) && $flash == 'flash_create_success')
            {
                #$userManager = $this->container->get('fos_user.user_manager');
                #$user = $this->container->get('context.user');
                #$userManager = $session->get('username');
                $user = $this->container->get('security.context')->getToken()->getUser()->getUsername();

                $attachment = new Attachment();
                $attachment->setPath('/tmp/image.jpg');
                $attachment->setNotes('nothing interesting to say');
                $attachment->getSystemUser($user);

                $em = $this->getDoctrine()->getEntityManager();
                $em->persist($product);
                $em->flush();
            }
        }

        return $result;
    }
}

service de l'attachement:

mercury.cargo_recognition.admin.attachment:
    class: Mercury\CargoRecognitionBundle\Admin\AttachmentAdmin
    tags:
        - { name: sonata.admin, manager_type: orm, group: General, label: Attachments }
    arguments: [ null, Mercury\CargoRecognitionBundle\Entity\Attachment, "SonataAdminBundle:CRUD" ]

Me semble que le actionController() est ignoré par SonataAdminBundle (et peut-être de l'ensemble de la classe file), car il n'y a pas de messages d'erreur, mais je ne sais pas pourquoi. En fait, je ne suis pas sûr si je suis aller chercher le nom d'utilisateur de la session.

J'ai vraiment besoin d'un bon tutoriel à ce sujet, mais il semble que toutes les informations que je reçois à ce sujet est obsolète dans certains aspects. En passant, je suis en utilisant Symfony 2.0.16

La cartographie de l'attachement de l'entité serait utile dans ce cas. Il peut ne pas être possible d'utiliser nom d'utilisateur comme un fk avec D2. Vous pourriez vouloir de l'utilisateur.id fk.
Je ne suis pas sûr de ce que tu veux dire avec "la carte des entités". Vous avez raison à propos de l'utilisation de l'utilisateur.id de la clé étrangère, il a été ma principale préoccupation depuis le début, en fait, j'ai ajouté une doctrine de la requête pour trouver l'ID utilisateur de la session nom d'utilisateur et cela fonctionne, mais... Mon dernier problème avec remplacement créeaction (), c'est que je suis de la génération de deux objets et à cet effet, deux enregistrements dans la table (un enregistrement de la forme, sans FK, et un autre codé en dur, avec un FK). Je suis en train de lire à propos de l'Écouteur d'Événement à l'aide d'un prePersist() la méthode, cause j'ai juste BESOIN d'un enregistrement, avec l'ID de l'utilisateur connecté dans la clé étrangère.

OriginalL'auteur abiyi | 2012-08-13