Symfony2 & SonataMedia: champ actuel pas lié à un admin
J'ai été tring les derniers jours pour faire SonataMedia fonctionne avec Symfony 2.0.16... sans succès. Googler autour semble que pas beaucoup de gens utilisent ce bundle ou il y a un tutoriel ou un how-to que je ne suis pas au courant, parce que je n'obtenez pas beaucoup d'info sur les messages d'erreur que j'ai eu jusqu'à présent.
De toute façon, ma dernière tentative a donné le message d'erreur suivant:
The current field `path` is not linked to an admin. Please create one for the target entity : ``
"chemin" est le champ utilisé pour enregistrer le fichier image (relatif) de chemin.
AttachmentAdmin.php
<?php
class AttachmentAdmin extends Admin
{
protected function configureFormFields(FormMapper $formMapper)
{
$formMapper
->add(
'path',
'sonata_type_collection',
array(
'required' => true
),
array(
'edit' => 'inline',
'inline' => 'table',
'sortable' => 'position',
'targetEntity' => 'Application\Sonata\MediaBundle\Entity\GalleryHasMedia',
'link_parameters' => array(
'context' => 'attachment'
)
)
)
->add('notes', 'textarea', array('required' => false))
;
}
//other methods
}
Attachment.php
<?php
class Attachment
{
//other properties
/**
* @var string $path
*
* @ORM\Column(name="path", type="string", nullable=false)
* @ORM\ManyToOne(targetEntity="Application\Sonata\MediaBundle\Entity\GalleryHasMedia", cascade={"persist"})
*/
protected $path;
//other methods
/**
* Set path
*
* @param string $path
*/
public function setPath($path)
{
$this->path = $path;
foreach ($path as $ent) {
$ent->setAttachment($this);
}
}
/**
*
* @return string
*/
public function getPath()
{
return $this->path;
}
/**
*
* @param \Application\Sonata\MediaBundle\Entity\GalleryHasMedia $path
*/
public function addPath(\Application\Sonata\MediaBundle\Entity\GalleryHasMedia $path)
{
$this->path[] = $path;
}
}
GalleryHasMedia.php
<?php
class GalleryHasMedia extends BaseGalleryHasMedia
{
/**
* @var integer $id
*/
protected $id;
/**
*
* @var File
*/
private $attachment;
/**
* Get id
*
* @return integer $id
*/
public function getId()
{
return $this->id;
}
/**
*
* @param \Mercury\CargoRecognitionBundle\Entity\Attachment $attachment
* @return \Application\Sonata\MediaBundle\Entity\GalleryHasMedia
*/
public function setAttachment(\Mercury\CargoRecognitionBundle\Entity\Attachment $attachment = null)
{
$this->attachment = $attachment;
return $this;
}
/**
*
* @return \Application\Sonata\MediaBundle\Entity\File
*/
public function getAttachment()
{
return $this->attachment;
}
}
services.yml
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, "MercuryCargoRecognitionBundle:AttachmentAdmin" ]
Merci pour l'info!
OriginalL'auteur abiyi | 2012-08-18
Vous devez vous connecter pour publier un commentaire.
Juste une je devine, créer un administrateur de classe pour
GalleryHasMedia
entité.La Figure il encore? Même problème.
C'est la réponse. Vous avez besoin de créé GalleryHasMediaAdmin, puis l'ajouter à des services.yml
OriginalL'auteur Mun Mun Das
Vous devez ajouter admin_code comme ce
OriginalL'auteur Azam Alvi
Que vous essayez d'appliquer 'sonata_type_collection sur le champ, chemin " de même classe d'entité 'attachement", tandis que " sonata_type_collection' est pour la collection de embeded forme d'une classe différente .
Ainsi, vous aurez qu'à une classe d'entité suppose que 'AttachmentCollection' et, dans ce AttachmentsCollection de administrateur de classe, vous devez intégrer les 'Attachement " class admin ..
exemple:
Et aussi ne pas oublier de faire la cartographie 'un à plusieurs " ou " de nombreux de nombreux' mappage entre "AttachmentsCollection " et " pièces Jointes' a supposer que l'on 'AttachmentsCollection' a 'de nombreusespièces Jointes' objet ..
OriginalL'auteur Ajeet Varma
Ressemble à ce que vous devez faire est de passer une
admin_code
qui est le nom de la section admin (mercury.cargo_recognition.admin.attachment
) dans le$fieldDescriptionOptions
paramètre à laadd()
méthode.OriginalL'auteur kalenjordan
Aussi vieux que cette question est, je vais encore ajouter quelque chose sur la façon dont cela peut être résolu à aider quelqu'un d'autre qui pourrait l'utiliser. Le problème de base est que le $path targetEntity("Application\Sonate\MediaBundle\Entity\GalleryHasMedia") n'est pas un administrateur de classe.
De le résoudre, d'ajouter un administrateur de classe pour votre targetEntity:
Puis ajouter qu'administrateur de catégorie de services.yml
OriginalL'auteur kakoma
si votre administrateur de classe pour GalleryHasMedia n'est pas encore créé et vous n'avez pas mis le code de service dans votre config.fichier yml puis la première à le faire et essayer de nouveau. J'ai eu le même problème et l'ai résolu de cette façon.
OriginalL'auteur CodeBugs
Cinq ans plus tard, il est intéressant de noter que la "cible entité" lui-même semble être vide dans le texte de l'erreur. Nous obtenons un ensemble de backticks, plutôt qu'un nom d'entité.
(Je suis en train de travailler sur une ancienne application et d'obtenir une erreur similaire à l'instant. J'ai généré un administrateur de classe pour mon entité et enregistré à la bonne place, et il semble que l'application est d'avoir du mal à comprendre ce que mon entité cible est -- qui, par défaut, l'empêche de trouver l'admin connexe de la classe. Je suis une sorte de déchirement de mes cheveux sur le présent et le sera sans doute mis en place une prime de demain.)
OriginalL'auteur Patrick at work