1
다른 미디어 유형에 임베디드 미디어 양식을 만들려고합니다.Symfony 2.8 : 임베디드 미디어 FormType 컬렉션이 표시되지 않습니다.
이것은 내 미디어 Formtype입니다. namespace AdminBundle \ Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Form\Extension\Core\Type\FileType;
class MediaType extends AbstractType
{
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('file', 'file')
;
}
/**
* @param OptionsResolver $resolver
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'AdminBundle\Entity\Media'
));
}
}
그리고 이것은 내 다른 FormType입니다 : 내가 형태에서 더 많은 미디어를 추가해야하는 경우
<?php
namespace AdminBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
class PegiType extends AbstractType
{
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('titre')
->add('media', 'collection', array(
'type' => new MediaType(),
'required' =>false,
'allow_add' => true,
'allow_delete' => true,
'prototype' => true,
'prototype_name' =>'media__name__',
))
;
}
/**
* @param OptionsResolver $resolver
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'AdminBundle\Entity\Pegi'
));
}
/**
* @return string
*/
public function getName()
{
return 'adminbundle_pegitype_files';
}
}
내가 웹에서 읽을 수는,이 같은 스크립트 JS를 추가 할 필요가 있었다 :
var $container;
var index = 0;
function form_allow(div, elem) {
$container = $('div#' + div);
var $lienAjout = $('<a href="#" id="ajout" class="btn">Ajouter</a>');
$container.append($lienAjout);
$lienAjout.click(function (e) {
ajouterCategorie($container, elem);
e.preventDefault(); // évite qu'un # apparaisse dans l'URL
return false;
});
index = $container.find(':input').length;
/*if (index == 0) {
ajouterCategorie($container, elem);
} */
$container.children('div').each(function() {
ajouterLienSuppression($(this));
});
}
function ajouterCategorie($container, elem) {
var $prototype = $($container.attr('data-prototype').replace(/__name__label__/g, index)
.replace(/__name__/g, index));
ajouterLienSuppression($prototype);
return index++;
}
function ajouterLienSuppression($prototype) {
$lienSuppression = $('<a href="#" class="btn btn-danger">Supprimer</a>');
$prototype.append($lienSuppression);
$lienSuppression.click(function (e) {
$prototype.remove();
e.preventDefault(); // évite qu'un # apparaisse dans l'URL
return false;
});
}
아무 것도 양식에 표시되지 않습니다. 내 질문은 : 양식에 표시하는 방법 및 라이브 미디어 파일의 추가 또는 삭제를 허용하는 것입니다. 아마 Js 파일이 해결책이 될 수 있습니다. 더 나은 해결책이 있습니까? 당신의 도움이
이봐, 당신의 도움에 대한 '감사합니다와
그래서 대신
는보십시오. 불행히도 여전히 작동하지 않습니다. / – MeursaultF