J'ai une entité marchande avec les champs et associations suivants: -
/**
* @ORM\ManyToMany(targetEntity="Category", inversedBy="merchants")
*/
public $categories;
/**
* @ORM\ManyToMany(targetEntity="Tag", inversedBy="merchants")
*/
public $tags;
/**
* @ORM\ManyToOne(targetEntity="Category", inversedBy="merchants")
*/
protected $primaryCategory;
/**
* @ORM\ManyToOne(targetEntity="Tag", inversedBy="merchants")
*/
protected $primaryTag;
Les balises et les catégories ont également une cartographie de nombreusesTomanany. Nous avons donc TAG_CATAGORY, MARCHANT_TAG, MARCHANT_CATAGORY Tables de mappage.
Maintenant, je veux effectuer des ajax sur ces champs.
Je veux permettre à l'utilisateur de sélectionner d'abord l'étiquette principale. Sur la base de la balise primaire, AJAX rafraîchissez les catégories à ceux qui appartiennent à cette balise et d'autres autres opérations.
Comment puis-je atteindre cet objectif?
Merci!
Publication très détaillée, juste pour mettre à jour le moyen de remplacer et d'utiliser le modèle modifier dans la classe d'administration.
Maintenant, vous devriez le faire de cette façon:
// src/AppBundle/Admin/EntityAdmin.php
class EntityAdmin extends Admin
{
public function getTemplate($name)
{
if ( $name == "edit" )
{
// template 'base_edit.html.twig' placed in app/Resources/views/Entity
return 'Entity/base_edit.html.twig' ;
}
return parent::getTemplate($name);
}
}
Ou injecter dans la définition de service utilisée - méthode fournie , pour que la classe d'administration soit aussi propre que possible:
// app/config/services.yml
app.admin.entity:
class: AppBundle\Admin\EntityAdmin
arguments: [~, AppBundle\Entity\Entity, ~]
tags:
- {name: sonata.admin, manager_type: orm, group: "Group", label: "Label"}
calls:
- [ setTemplate, [edit, Entity/base_edit.html.twig]]
À l'étape 1 de l'amit et la réponse du Lumbendil, vous devriez changer
{% extends base_template %}
dans
{% extends 'SonataAdminBundle::standard_layout.html.twig' %}
si vous obtenez une erreur comme
Unable to find template "" in YourBundle:YourObject:base_edit.html.twig at line 34.
dans le bloc Javascripts, vous devez changer "liszt:updated"
à "chosen:updated"
j'espère que cela aide quelqu'un;)