Ich habe in den letzten Tagen wie verrückt gegoogelt und versucht, herauszufinden (ohne Erfolg), wie eine SonataAdmin-Aktion überschreiben, um den Sitzungsbenutzernamen zu erfassen und ihn im Fremdschlüsselfeld zu speichern.
AttachmentAdminController-Klasse:
<?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;
}
}
Dienstanhang:
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" ]
Es scheint mir, als ob der actionController() von SonataAdminBundle (und vielleicht der ganzen Klassendatei) ignoriert wird, weil es überhaupt keine Fehlermeldungen gibt, aber ich weiß nicht, warum. Eigentlich bin ich nicht sicher, ob ich den Benutzernamen aus der Sitzung abrufe.
Ich brauche wirklich eine gute Anleitung zu diesem Thema, aber anscheinend ist jede Information, die ich darüber bekomme, in irgendeiner Hinsicht veraltet. Übrigens, ich bin mit Symfony 2.0.16