2015-03-14 2 views
0

У меня есть объект «map» с полях «широта» и «долгота». Эти поля заполнены от this jQuery plugin.Пользовательский шаблон sonata-admin для лицаAdmin formMapper

При создании стандарта CRF в Symfony2 отлично работает (очевидно, модифицируя созданный по умолчанию код) в sonata admin. Я не могу его интегрировать. У меня есть некоторые проблемы с наследованием шаблона и с переменными шаблона.

Мой план вставить этот админ в другой EntityAdmin инлайн, но я не могу сделать это даже для одного лица (MapAdmin для этого случая)

это мой MapAdmin

namespace Acme\MapBundle\Admin; 

use Sonata\AdminBundle\Admin\Admin; 
use Sonata\AdminBundle\Datagrid\ListMapper; 
use Sonata\AdminBundle\Datagrid\DatagridMapper; 
use Sonata\AdminBundle\Form\FormMapper; 

class MapAdmin extends Admin { 

// Fields to be shown on create/edit forms 
protected function configureFormFields(FormMapper $formMapper) { 
    $formMapper 

      ->add('descripcion', 'acme_map') 
      ->add('latitude', 'acme_map') 
      ->add('longitude', 'acme_map') 
      ->add('zoom', 'acme_map') 
    ; 
} 

protected function configureDatagridFilters(DatagridMapper $datagridMapper) { 
    $datagridMapper 
      ->add('descripcion', null, array('label' => 'Mapa')) 
    ; 
} 

// Fields to be shown on lists 
protected function configureListFields(ListMapper $listMapper) { 
    $listMapper 
      ->addIdentifier('descripcion') 
    ; 
} 

public function getFormTheme() { 

    return array_merge(
      parent::getFormTheme(), array(
     'AcmePlacesBundle:Resources:Views:Mapa:admincreate.html.twig') 
    ); 
}} 

... Мои зарегистрирован как тип вида услуг ... (псевдоним: acme_map)

namespace Acme\PlacesBundle\Form\Type; 

use Symfony\Component\Form\AbstractType; 
use Symfony\Component\Form\FormBuilderInterface; 
use Symfony\Component\OptionsResolver\OptionsResolverInterface; 

class MapType extends AbstractType { 
public function getParent() 
    { 
     return 'text'; 
    } 


/** 
* @return string 
*/ 
public function getName() { 
    return 'acme_map'; 
} 

} 

... И мой шаблон веточка

{% extends '::SonataAdminBundle:Form:form_admin_fields.html.twig' %} 
{% block stylesheets %} 
    {{ parent() }} 

    <link rel="stylesheet" type="text/css" href="{{ asset('css/jquery-gmaps-latlon-picker.css') }}"/> 

{% endblock %} 

{% block javascripts %} 
    {{ parent() }} #} 
<script src="http://maps.googleapis.com/maps/api/js?sensor=false"></script> 
<script src="{{ asset('js/jquery-gmaps-latlon-picker.js') }}"></script> 
{% endblock %} 

{% block acme_map_widget %} 


<fieldset class="gllpLatlonPicker" id="custom_id"> 
    {# <input type="text" class="gllpSearchField"/> #} 

    {{ form_errors(form.busqueda) }} 
    {{ form_widget(form.busqueda) }} 
    <input type="button" class="gllpSearchButton" value="search"/> 
    <br/><br/> 
    <div class="gllpMap">Google Maps</div> 
    {# <input type="text" disabled class="gllpLatitude" value="-20"/> #} 
    {{ form_errors(form.latitude) }} 
    {{ form_widget(form.latitude) }} 

    {# <input type="text" disabled class="gllpLongitude" value="-30"/> #} 
    {{ form_errors(form.longitude) }} 
    {{ form_widget(form.longitude) }} 

    {#<input type="text" disabled class="gllpZoom" value="13"/>#} 
    {{ form_errors(form.zoom) }} 
    {{ form_widget(form.zoom) }} 
</fieldset> 
<br> 


{% endblock %} 

Ошибки:

Template "SonataAdminBundle:Form:form_admin_fields.html.twig" cannot be used as a trait in AcmePlacesBundle:Mapa:admincreate.html.twig at line 1.

и я не знаю, как доступ к полям cariables определен в MapAdmin.php в шаблоне веточки. {{form.latitude}} не работает

Помощь Пожалуйста!

ответ

1

Вы не можете использовать расширения в своем настраиваемом шаблоне, расширяя только одно единственное наследование. Шаблон form_admin_fields.html.twig из SonataAdmin уже использует распространяется, так что вы должны изменить распространяетесь на use в шаблоне веточки:

{% use '::SonataAdminBundle:Form:form_admin_fields.html.twig' %} 

Вы должны быть в состоянии получить доступ к переменным формам с {{form.latitude}}.

UPDATE

По какой-то причине использование не работает, чтобы исправить это, вы должны сделать просто:

{% extends 'SonataAdminBundle:Form:form_admin_fields.html.twig' %} 

Ваш заказ форма будет использоваться, когда вы используете новый тип (acme_map).

+0

У меня есть эта ошибка – Emaus

+0

Возможно, вы забыли поместить ошибку. – HypeR

+0

Tnk за ответ, @HyperR
У меня есть эта ошибка:
шаблон "SonataAdminBundle: Форма: form_admin_fields.html.twig" не может быть использован в качестве признака в SonataAdminBundle: CRUD: edit.html.twig в строке 12 – Emaus