Upload d'image dans composant personnel

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [Problème] Upload d'image dans composant personnel

    Bonjour,

    Je reviens vers vous pour un problème dans mon composant joomla.
    Mon upload d'image ne fonctionne pas.
    J'ai utilisé ce tutoriel pour la mise en place de mon composant http://docs.joomla.org/J3.x:Developi...ackend_actions
    Mais ce tutoriel est très basique et il me manque pas mal de fonction, comme l'ajout et la modification qui a l'air de ce faire automatiquement à partir de ce tutoriel, et ce qui est finalement le cas, sauf pour les input file.

    Donc voici ma fonction save() malheureusement, je n'ai pas l'impression de passer dedans (le die() ne fonctionne pas) donc je vous montre mon controller entièrement

    Code PHP:
    <?php
    /**
     * @version     1.0.0
     * @package     com_annonces
     * @copyright   Copyright (C) 2014. Tous droits réservés.
     * @license     GNU General Public License version 2 ou version ultérieure ; Voir LICENSE.txt
     * @author      Mélissa <melissa@phenix-software.com> - http://phenix-software.com
     */

    // No direct access
    defined('_JEXEC') or die;

    jimport('joomla.application.component.view');

    /**
     * View to edit
     */
    class AnnoncesViewElmenttechnique extends JViewLegacy
    {
        protected 
    $state;
        protected 
    $item;
        protected 
    $form;

        
    /**
         * Display the view
         */
        
    public function display($tpl null)
        {
            
    $this->state    $this->get('State');
            
    $this->item        $this->get('Item');
            
    $this->form        $this->get('Form');

            
    // Check for errors.
            
    if (count($errors $this->get('Errors'))) {
                throw new 
    Exception(implode("\n"$errors));
            }

            
    $this->addToolbar();
            
    parent::display($tpl);
        }

        
    /**
         * Add the page title and toolbar.
         */
        
    protected function addToolbar()
        {
            
    JFactory::getApplication()->input->set('hidemainmenu'true);

            
    $user        JFactory::getUser();
            
    $isNew        = ($this->item->elet_id == 0);
            if (isset(
    $this->item->checked_out)) {
                
    $checkedOut    = !($this->item->checked_out == || $this->item->checked_out == $user->get('id'));
            } else {
                
    $checkedOut false;
            }
            
    $canDo        AnnoncesHelper::getActions();

            
    JToolBarHelper::title($isNew JText::_('Ajouter un élément technique')
                : 
    JText::_('Modifier un élément techique'), 'elmenttechnique.png');

            
    // If not checked out, can save the item.
            
    if (!$checkedOut && ($canDo->get('core.edit')||($canDo->get('core.create'))))
            {

                
    JToolBarHelper::apply('elmenttechnique.apply''JTOOLBAR_APPLY');
                
    JToolBarHelper::save('elmenttechnique.save''JTOOLBAR_SAVE');
            }
            if (!
    $checkedOut && ($canDo->get('core.create'))){
                
    JToolBarHelper::custom('elmenttechnique.save2new''save-new.png''save-new_f2.png''JTOOLBAR_SAVE_AND_NEW'false);
            }
            
    // If an existing item, can save to a copy.
            
    if (!$isNew && $canDo->get('core.create')) {
                
    JToolBarHelper::custom('elmenttechnique.save2copy''save-copy.png''save-copy_f2.png''JTOOLBAR_SAVE_AS_COPY'false);
            }
            
            
    JToolBarHelper::cancel('elmenttechnique.cancel'$isNew 'JTOOLBAR_CANCEL' 'JTOOLBAR_CLOSE');
        }
        
        function 
    save()
        {
            
    $jinput JFactory::getApplication()->input;
            
    $file $jinput->files->get('elet_icone'null);
            
    $destination JUri::root() . "images/elements_techniques/" $file['name'];
            
    var_dump($destination);die();
            
            
    // This will hold error
            
    $error null;

            
    // Check if there was upload at all, mime is correct, file size, XSS, whatever...
            
    if (!ElmenttechniqueHelper::canUpload($file$error))
            {
                
    $this->setError('problem: ' $error);
                return 
    false;
            }
            
            
    JFile::upload($file['tmp_name'], $destination);
        }
    }
    Si vous voulez plus d'informations (form, view, model) n'hésitez pas, mais je ne comprend pas pourquoi je ne rentre pas dans ma fonction save()

    Merci d'avance.
    Cordialement,
    Mell

  • #2
    Re : Upload d'image dans composant personnel

    Bonjour,

    peux tu nous mettre le formulaire ?

    Commentaire


    • #3
      Re : Upload d'image dans composant personnel

      Voici ma vue edit.php

      Code:
      <?php
      /**
       * @version     1.0.0
       * @package     com_annonces
       * @copyright   Copyright (C) 2014. Tous droits réservés.
       * @license     GNU General Public License version 2 ou version ultérieure ; Voir LICENSE.txt
       * @author      Mélissa <melissa@phenix-software.com> - http://phenix-software.com
       */
      // no direct access
      defined('_JEXEC') or die;
      
      JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html');
      JHtml::_('behavior.tooltip');
      JHtml::_('behavior.formvalidation');
      JHtml::_('formbehavior.chosen', 'select');
      JHtml::_('behavior.keepalive');
      
      // Import CSS
      $document = JFactory::getDocument();
      $document->addStyleSheet('components/com_annonces/assets/css/annonces.css');
      ?>
      <script type="text/javascript">
          js = jQuery.noConflict();
          js(document).ready(function() {
          });
      
          Joomla.submitbutton = function(task)
          {
              if (task == 'elmenttechnique.cancel') {
                  Joomla.submitform(task, document.getElementById('elmenttechnique-form'));
              }
              else {
                  if (task != 'elmenttechnique.cancel' && document.formvalidator.isValid(document.id('elmenttechnique-form'))) {
                      Joomla.submitform(task, document.getElementById('elmenttechnique-form'));
                  }
                  else {
                      alert('<?php echo $this->escape(JText::_('JGLOBAL_VALIDATION_FORM_FAILED')); ?>');
                  }
              }
          }
      </script>
      
      <form action="<?php echo JRoute::_('index.php?option=com_annonces&view=elmenttechnique&layout=edit&id=' . (int) $this->item->elet_id); ?>" method="post" enctype="multipart/form-data" name="adminForm" id="elmenttechnique-form" class="form-validate">
      
          <div class="form-horizontal">
              <?php echo JHtml::_('bootstrap.startTabSet', 'myTab', array('active' => 'general')); ?>
              <div class="row-fluid">
                  <div class="span10 form-horizontal">
                      <fieldset class="adminform">
                          <div class="row-fluid">
                              <div class="span6">
                                  <?php foreach ($this->form->getFieldset() as $field): ?>
                                      <div class="control-group">
                                          <div class="control-label"><?php echo $field->label; ?></div>
                                          <div class="controls"><?php echo $field->input; ?></div>
                                      </div>
                                  <?php endforeach; ?>
                              </div>
                          </div>
                      </fieldset>
                  </div>
              </div>
              
              <?php echo JHtml::_('bootstrap.endTabSet'); ?>
      
              <input type="hidden" name="task" value="elmenttechnique.edit" />
              <?php echo JHtml::_('form.token'); ?>
      
          </div>
      </form>
      et mon form elmenttechnique.xml
      Code:
      <?xml version="1.0" encoding="utf-8"?>
      <form>
              <fieldset>
                      <field
                              name="elet_id"
                              type="hidden"
                      />
                      <field
                              name="elet_libelle"
                              type="text"
                              label="Nom"
                              description=""
                              size=""
                              class="inputbox"
                              default=""
                      />
                      <field
                          name="elet_icone"
                          type="file"
                          label="Icone"
                          description=""
                          size=""
                          class="inputbox"
                          default=""
                      />
              </fieldset>
      </form>
      Je n'arrive pas non plus, quand je clique sur modifier, à avoir mes valeurs dans mes champs.
      Dernière édition par Mell_ à 22/05/2014, 11h01

      Commentaire


      • #4
        Re : Upload d'image dans composant personnel

        Bon j'ai réglé un soucis, je n'avais pas accès à ma function save() parce que je ne l'avais pas mise dans le bon fichier.
        Je l'ai déplacé dans mon controller elmenttechnique.php

        J'avance sur le code que j'ai actuellement du coup et je reviens vers vous si j'ai réussi à régler mon soucis.
        Par contre, sur le fait de ne pas avoir mes infos afficher quand je clique sur modifier c'est toujours d'actualité.

        Commentaire


        • #5
          Re : Upload d'image dans composant personnel

          ça y est, mon upload d'image fonctionne

          Code PHP:
          public function save($key ""$urlVar "")
              {
                  
          jimport('joomla.filesystem.file');
                  
                  
          $jFileInput = new JInput($_FILES);
                  
          $files $jFileInput->get('jform',array(),'array');
                  
                  
          $destination JPATH_ROOT "/../images/elements_techniques/" $files['name']['elet_icone'];        
                  
          $return JFile::upload($files['tmp_name']['elet_icone'], $destination);

                  return 
          parent::save($key$urlVar);
              } 
          Par contre comment je fais pour que le lien de l'images, soit $files['name']['elet_icone'], soit enregistrer en BDD ?

          Commentaire

          Annonce

          Réduire
          Aucune annonce pour le moment.

          Partenaire de l'association

          Réduire

          Hébergeur Web PlanetHoster
          Travaille ...
          X