浏览代码

Desplegable Tipo de Objeto

Daniel Libonati 7 年之前
父节点
当前提交
f7922e7a2b

+ 23 - 0
Controller/MapController.php

@@ -32,6 +32,29 @@ class MapController extends Controller
         return $response;
     }
 
+    /**
+     * @param Request $request
+     * @return JsonResponse
+     */
+    public function getObjectTypeListAction(Request $request)
+    {
+        $query = $request->query->get('q', '');
+        $choiceLoader = $this->get('map.object_type.choiceloader');
+        $choiceList = $choiceLoader->getChoicesList($query);
+        $list_values = [];
+        foreach ($choiceList as $label => $id) {
+            $list_values[] = [
+                'id' => $id,
+                'text' => $label
+            ];
+        }
+
+        $response = new JsonResponse();
+        $response->setData(['results' => $list_values]);
+
+        return $response;
+    }
+
     /**
      * @param Request $request
      * @return JsonResponse

+ 35 - 4
Entity/Location.php

@@ -29,8 +29,15 @@ class Location
      * @ORM\Column(type="integer", nullable=true)
      */
     private $mapId;
-    
-    
+
+    /**
+     * @var int
+     *
+     * @ORM\Column(type="integer", nullable=true)
+     */
+    private $objectTypeId;
+
+
     /**
      * @return string
      */
@@ -41,7 +48,7 @@ class Location
             'extraData' => $this->jsonExtraData(),
         );
     }
-    
+
     /**
      * Get id
      *
@@ -51,7 +58,7 @@ class Location
     {
         return $this->id;
     }
-    
+
     /**
      * Set mapId
      *
@@ -76,4 +83,28 @@ class Location
         return $this->mapId;
     }
 
+    /**
+     * Set objectTypeId
+     *
+     * @param integer $objectTypeId
+     *
+     * @return Location
+     */
+    public function setObjectTypeId($objectTypeId = null)
+    {
+        $this->objectTypeId = $objectTypeId;
+
+        return $this;
+    }
+
+    /**
+     * Get objectTypeId
+     *
+     * @return int
+     */
+    public function getObjectTypeId()
+    {
+        return $this->objectTypeId;
+    }
+
 }

+ 1 - 0
Form/Type/LocationType.php

@@ -20,6 +20,7 @@ class LocationType extends AbstractType
     {
         $builder
                 ->add('mapId', RemoteMapType::class)
+                ->add('objectTypeId', RemoteObjectTypeType::class)
                 ->add('extraData', HiddenType::class)
                 ->add('map', LeafletMapType::class)
                 ;

+ 9 - 0
Form/Type/RemoteObjectTypeType.php

@@ -0,0 +1,9 @@
+<?php
+
+namespace MapBundle\Form\Type;
+
+use WebserviceBundle\Form\Type\RemoteClientType;
+
+class RemoteObjectTypeType extends RemoteClientType
+{
+}

+ 6 - 2
Resources/config/routing.yml

@@ -1,7 +1,11 @@
 ajax_map_list:
     path:      /ajax_map_list
     defaults:  { _controller: MapBundle:Map:getMapList }
-    
+
 ajax_map:
     path:      /ajax_map
-    defaults:  { _controller: MapBundle:Map:getMap }    
+    defaults:  { _controller: MapBundle:Map:getMap }
+
+ajax_objecttype_list:
+    path:      /ajax_objecttype_list
+    defaults:  { _controller: MapBundle:Map:getObjectTypeList }

+ 15 - 4
Resources/config/services.yml

@@ -1,12 +1,13 @@
 parameters:
     googlemaps_api_key: AIzaSyCq1Gbl9TX6KamfOmXZecuJee1837TdtpI
-    
+
 twig:
     globals:
         script_google_maps: 'https://maps.googleapis.com/maps/api/js?v=3&key=%googlemaps_api_key%'
     form_themes:
         - 'MapBundle:Form/Type:location_widget.html.twig'
         - 'MapBundle:Form/Type:remote_map_widget.html.twig'
+        - 'MapBundle:Form/Type:remote_object_type_widget.html.twig'
         - 'LeafletBundle:Form/Type:leaflet_map_widget.html.twig'
 
 services:
@@ -14,14 +15,24 @@ services:
        class: MapBundle\EventListener\LocationListener
        tags:
            - { name: kernel.event_listener, event: sonata.admin.event.configure.form, method: configureFormFields }
-           - { name: kernel.event_listener, event: sonata.admin.event.configure.show, method: configureShowFields }          
+           - { name: kernel.event_listener, event: sonata.admin.event.configure.show, method: configureShowFields }
 
     map.map.choiceloader:
        class: WebserviceBundle\Form\ChoiceList\Loader\ClientChoiceLoader
        arguments: ["@webservice", "@base_tenancy.tenancy_service", "remote_get_map_url", false]
-           
+
+    map.object_type.choiceloader:
+       class: WebserviceBundle\Form\ChoiceList\Loader\ClientChoiceLoader
+       arguments: ["@webservice", "@base_tenancy.tenancy_service", "remote_get_object_type_url", false]
+
     map.form.type.remotemap:
        class: MapBundle\Form\Type\RemoteMapType
        arguments: ["@map.map.choiceloader"]
        tags:
-           - { name: form.type }       
+           - { name: form.type }
+
+    object_type.form.type.remotemap:
+       class: MapBundle\Form\Type\RemoteObjectTypeType
+       arguments: ["@map.object_type.choiceloader"]
+       tags:
+           - { name: form.type }

+ 1 - 0
Resources/views/Form/Type/location_widget.html.twig

@@ -1,6 +1,7 @@
 {% block location_widget %}
     {% spaceless %}
         {{ form_row(form.mapId) }}
+        {{ form_row(form.objectTypeId) }}
         {{ form_row(form.extraData) }}
         {{ form_row(form.map) }}
     {% endspaceless %}

+ 2 - 2
Resources/views/Form/Type/remote_map_widget.html.twig

@@ -1,11 +1,11 @@
 {% extends 'WebserviceBundle:Type:remote_client_widget.html.twig' %}
 
 {% block remote_map_widget %}
-    
+
     {% set id = 'mapId' %}
     {% set ajax_url = 'ajax_map_list' %}
     {% set create = false %}
-    
+
     {% block remote_client_widget %}
     {{ parent() }}
     {% endblock remote_client_widget %}

+ 18 - 0
Resources/views/Form/Type/remote_object_type_widget.html.twig

@@ -0,0 +1,18 @@
+{% extends 'WebserviceBundle:Type:remote_client_widget.html.twig' %}
+
+{% block remote_object_type_widget %}
+
+    {% set id = 'objectTypeId' %}
+    {% set ajax_url = 'ajax_objecttype_list' %}
+    {% set create = false %}
+
+    {% block remote_client_widget %}
+    {{ parent() }}
+    {% endblock remote_client_widget %}
+
+<script type="text/javascript">
+
+
+</script>
+
+{% endblock remote_object_type_widget %}