IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Utiliser le plugin jQuery Address Picker avec Symfony2 [2.x]


Sujet :

Symfony PHP

  1. #1
    Membre du Club
    Inscrit en
    Mai 2010
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 52
    Points : 62
    Points
    62
    Par défaut Utiliser le plugin jQuery Address Picker avec Symfony2
    Bonjour a tout le monde !
    je suis dans le besoin d'utiliser le plugin (voir demo: http://xilinus.com/jquery-addresspic...mos/index.html) dans mon projet symfony2. Tout semble bien marche j'ai utiliser le composant form de symfony2 pour afficher les widget de longitude et de latitude de maniere a ce qu'ils soient remplis par le plugin lorsqu'un utilisateur fait deplacer le marqueur qui sur la carte (voir demo) seulement apres soumition, doctrine leve une exception me disant que les champ lat et long n'ont pas ete remplis: An exception occurred while executing 'INSERT INTO company (adress, locality, country, lat, lng, name, geolocation, logo, description, category_id) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)' with params ["test 1", "test 1", "rca", null, null, "as", null, null, "asfd", null]:

    SQLSTATE[23000]: Integrity constraint violation: 1048 Le champ 'lat' ne peut être vide (null)

    voici ma vue :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="utf-8">
     
      <link rel="stylesheet" href="{{asset('css/jquery.ui.all.css')}}">
      <link rel="stylesheet" href="{{asset('css/demo.css')}}">
      <script src="http://maps.google.com/maps/api/js?sensor=false"></script>
     
      <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
      <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"></script>
      <script src="{{asset('js/jquery.ui.addresspicker.js')}}"></script>
      <script>
      $(function() {
        var addresspicker = $( "#addresspicker" ).addresspicker({
          componentsFilter: 'country:FR'
        });
        var addresspickerMap = $( "#addresspicker_map" ).addresspicker({
          regionBias: "fr",
          language: "fr",
          updateCallback: showCallback,
          mapOptions: {
            zoom: 7,
            center: new google.maps.LatLng(7.43, -1.03),
            scrollwheel: false,
            mapTypeId: google.maps.MapTypeId.ROADMAP
          },
          elements: {
            map:      "#map",
            lat:      "#mpk_cmsbundle_company_lat",
            lng:      "#mpk_cmsbundle_company_lng",
            street_number: '#street_number',
            route: '#route',
            locality: '#locality',
            sublocality: '#sublocality',
            administrative_area_level_3: '#administrative_area_level_3',
            administrative_area_level_2: '#administrative_area_level_2',
            administrative_area_level_1: '#administrative_area_level_1',
            country:  '#country',
            postal_code: '#postal_code',
            type:    '#type'
          }
        });
     
        var gmarker = addresspickerMap.addresspicker( "marker");
        gmarker.setVisible(true);
        addresspickerMap.addresspicker( "updatePosition");
     
        $('#reverseGeocode').change(function(){
          $("#addresspicker_map").addresspicker("option", "reverseGeocode", ($(this).val() === 'true'));
        });
     
        function showCallback(geocodeResult, parsedGeocodeResult){
          $('#callback_result').text(JSON.stringify(parsedGeocodeResult, null, 4));
        }
        // Update zoom field
        var map = $("#addresspicker_map").addresspicker("map");
        google.maps.event.addListener(map, 'idle', function(){
          $('#zoom').val(map.getZoom());
        });
     
      });
      </script>
    </head>
    <body>
      <form action="#" method="post" {{form_enctype(form)}}>
          <div class="demo">
            <div class='clearfix'>
              <div class='input input-positioned'>
     
                <label>Address : </label> <input id="addresspicker_map" disabled="disabled" name="something" placeholder="ex: ...Osu, Mamprobi, Bortianor... "/>   <br/>
                <label>Locality: </label> <input id="locality" disabled=disabled> <br/>
                <label>SubLocality: </label> <input id="sublocality" disabled=disabled> <br/>
                <label>Borough: </label> <input id="administrative_area_level_3" disabled=disabled> <br/>
                <label>District: </label> <input id="administrative_area_level_2" disabled=disabled> <br/>
                <label>State/Province: </label> <input id="administrative_area_level_1" disabled=disabled> <br/>
                <label>Country:  </label> <input id="country" disabled=disabled> <br/>
                <label>Postal Code: </label> <input id="postal_code" disabled=disabled> <br/>
                <label>Lat:      </label> {{form_widget(form.lat, {attr: {'disabled':'disabled'}})}} <br/>
                <label>Lng:      </label> {{form_widget(form.lng, {attr: {'disabled':'disabled'}})}} <br/>
                <!--<label>Lng:      </label> <input id="lng" disabled=disabled> <br/>-->
                <label>Zoom:     </label> <input id="zoom" disabled=disabled> <br/>
                <label>Type:     </label> <input id="type" disabled=disabled /> <br/>
                </div>
                <div id="map"></div>
                <!--<div id="legend">You can drag and drop the marker to the correct location</div>-->
              </div>
            </div>
            <div class='input-positioned'><label>Company Name: </label>{{form_widget(form.name)}}</div>
            <div class='input-positioned'><label>Services: </label>{{form_widget(form.services)}}</div>
            <div class='input-positioned'><label>logo: </label><input type="file"/></div>
        <div class='input-positioned'>
          <label>Description: </label>
          {{form_widget(form.description, {'attr':{'rows':15}})}}
        </div>
        <input type="submit"/>
      </form>
      </div><!-- End demo -->
     
    </body>
    </html>
    et mon formulaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    <?php
     
    namespace Mpk\CmsBundle\Form;
     
    use Doctrine\ORM\EntityManager;
    use Symfony\Component\Form\AbstractType;
    use Symfony\Component\Form\FormBuilderInterface;
    use Symfony\Component\Form\FormEvents;
    use Symfony\Component\Form\FormEvent;
    use Symfony\Component\OptionsResolver\OptionsResolverInterface;
    use Symfony\Component\Form\FormInterface;
    use MpkCmsBundle\Entity\Category;
    use Mpk\CmsBundle\Entity\ServiceRepository;
     
     
    class CompanyType extends AbstractType
    {
        protected $em;
        protected $idCategory;
     
     
        public function __construct($idCategory)
        {
            $this->idCategory = $idCategory;
        }
     
        public function buildForm(FormBuilderInterface $builder, array $options)
        {
            $idCategory = $this->idCategory;
            $builder->add('name')
                    ->add('services', 'entity', array('class' => 'MpkCmsBundle:Service',
                                              'expanded' => true,
                                              'multiple' => true,
                                                     'query_builder' => function(ServiceRepository $r)use($idCategory){
                                                      return $r->findByCategory($idCategory);
                                                    }))
     
                    ->add('lat')
                    ->add('lng')
                    ->add('description')
            ;
        }
     
     
        /**
         * @param OptionsResolverInterface $resolver
         */
        public function setDefaultOptions(OptionsResolverInterface $resolver)
        {
            $resolver->setDefaults(array(
                'data_class' => 'Mpk\CmsBundle\Entity\Company',
                //'csrf_protection' => false,
            ));
        }
     
        /**
         * @return string
         */
        public function getName()
        {
            return 'mpk_cmsbundle_company';
        }
    }
    aidez - moi SVP en effet s'il ya un bundle qui fait ca deja dites - le moi sinon dites moi ce qu'il faut modifier afin que Symfony2 prend en compte les donnees remplis par le plugin

  2. #2
    Membre du Club
    Inscrit en
    Mai 2010
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 52
    Points : 62
    Points
    62
    Par défaut
    il fallait just supprimer l'attribut desable des champ lng et lat

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. utilisation de plugin jquery
    Par brice97431 dans le forum jQuery
    Réponses: 3
    Dernier message: 04/05/2013, 19h13
  2. Utilisation du Plugin Jquery Boxy
    Par camcam8782 dans le forum jQuery
    Réponses: 2
    Dernier message: 12/08/2009, 00h06
  3. bug plugin jquery.php.js avec ovh
    Par december dans le forum jQuery
    Réponses: 2
    Dernier message: 16/06/2009, 10h02
  4. Utiliser le plugin jQuery.history
    Par SpIrIt505050 dans le forum jQuery
    Réponses: 1
    Dernier message: 19/02/2009, 11h17
  5. Réponses: 1
    Dernier message: 18/01/2007, 11h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo