2016-12-21 2 views
0

J'ai un problème lorsque j'essaie de télécharger une image vers une entité.Problème de téléchargement d'image de l'administrateur Sonata

ENTITÉ

<?php 

namespace app\PibeBundle\Entity; 

use Doctrine\ORM\Mapping as ORM; 
use Gedmo\Mapping\Annotation as Gedmo; 
use Gedmo\Translatable\Translatable; 
use Application\Sonata\MediaBundle\Entity\Media; 

/** 
* Pibe 
* 
* @ORM\Table() 
* @ORM\Entity 
*/ 
class pibe 
{ 
/** 
* @var integer 
* 
* @ORM\Column(name="id", type="integer") 
* @ORM\Id 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
private $id; 

    /** 
* @var string 
* @var \Application\Sonata\MediaBundle\Entity\Media 
* @ORM\ManyToOne(targetEntity="Application\Sonata\MediaBundle\Entity\Media", cascade={"persist"}, fetch="LAZY") 
*/ 
private $imagen; 

    /** 
* @var string 
* @var \Application\Sonata\MediaBundle\Entity\Media 
* @ORM\ManyToOne(targetEntity="Application\Sonata\MediaBundle\Entity\Media", cascade={"persist"}, fetch="LAZY") 
*/ 

private $logoEs; 

    /** 
* @var string 
* @var \Application\Sonata\MediaBundle\Entity\Media 
* @ORM\ManyToOne(targetEntity="Application\Sonata\MediaBundle\Entity\Media", cascade={"persist"}, fetch="LAZY") 
*/ 
private $logoEn; 


/** 
* @var string 
* @Gedmo\Translatable 
* @ORM\Column(name="titulo", type="text",nullable=true) 
*/ 
private $titulo; 

     /** 
* @var string 
* @Gedmo\Translatable 
* @ORM\Column(name="script", type="text", nullable=true) 
*/ 

private $script; 


/** 
* @var string 
*/ 
private $scriptEn; 


/** 
* Set imagen 
* 
* @param string $imagen 
* @return ImagenesHome 
*/ 
public function setScript($script) 
{ 
    $this->script = $script; 

    return $this; 
} 

/** 
* Get imagen 
* 
* @return string 
*/ 
public function getScript() 
{ 
    return $this->script; 
} 


    /** 
* Set imagen 
* 
* @param string $imagen 
* @return ImagenesHome 
*/ 
public function setScriptEn($scriptEn) 
{ 
    $this->scriptEn = $scriptEn; 

    return $this; 
} 

/** 
* Get imagen 
* 
* @return string 
*/ 
public function getScriptEn() 
{ 
    return $this->scriptEn; 
} 



/** 
* @var string 
*/ 
private $tituloEn; 


/** 
* @var string 
* @Gedmo\Translatable 
* @ORM\Column(name="texto", type="text",nullable=true) 
*/ 
private $texto; 

/** 
* @var string 
*/ 
private $textoEn; 

    /** 
* @var boolean 
* 
* @ORM\Column(name="activo", type="boolean") 
*/ 
private $activo; 

/** 
* @var integer 
* 
* @ORM\Column(name="ranking", type="integer") 
*/ 
private $ranking; 


/** 
* @var string 
* @Gedmo\Locale 
*/ 
private $locale; 



/** 
* Get id 
* 
* @return integer 
*/ 
public function getId() 
{ 
    return $this->id; 
} 


/** 
* Set imagen 
* 
* @param string $imagen 
* @return BannerHome 
*/ 
public function setImagen(Media $imagen=null) 
{ 
    $this->imagen = $imagen; 

    return $this; 
} 

/** 
* Get imagen 
* 
* @return string 
*/ 
public function getImagen() 
{ 
    return $this->imagen; 
} 




/** 
* Set imagen 
* 
* @param string $imagen 
* @return BannerHome 
*/ 
public function setLogoEs(Media $logoEs) 
{ 
    $this->logoEs = $logoEs; 

    return $this; 
} 

/** 
* Get imagen 
* 
* @return string 
*/ 
public function getLogoEs() 
{ 
    return $this->logoEs; 
} 

/** 
* Set imagen 
* 
* @param string $imagen 
* @return BannerHome 
*/ 
public function setLogoEn(Media $logoEn) 
{ 
    $this->logoEn = $logoEn; 

    return $this; 
} 

/** 
* Get imagen 
* 
* @return string 
*/ 
public function getLogoEn() 
{ 
    return $this->logoEn; 
} 

/** 
* Set titulo 
* 
* @param string $titulo 
* @return BannerHome 
*/ 
public function setTitulo($titulo) 
{ 
    $this->titulo = $titulo; 

    return $this; 
} 

/** 
* Get titulo 
* 
* @return string 
*/ 
public function getTitulo() 
{ 
    return $this->titulo; 
} 

/** 
* Set titulo 
* 
* @param string $titulo 
* @return BannerHome 
*/ 
public function setTituloEn($tituloEn) 
{ 
    $this->tituloEn = $tituloEn; 

    return $this; 
} 

/** 
* Get titulo 
* 
* @return string 
*/ 
public function getTituloEn() 
{ 
    return $this->tituloEn; 
} 

/** 
* Set texto 
* 
* @param string $texto 
* @return BannerHome 
*/ 
public function setTexto($texto) 
{ 
    $this->texto = $texto; 

    return $this; 
} 

/** 
* Get texto 
* 
* @return string 
*/ 
public function getTexto() 
{ 
    return $this->texto; 
} 



/** 
* Set texto 
* 
* @param string $texto 
* @return BannerHome 
*/ 
public function setTextoEn($textoEn) 
{ 
    $this->textoEn = $textoEn; 

    return $this; 
} 

/** 
* Get texto 
* 
* @return string 
*/ 
public function getTextoEn() 
{ 
    return $this->textoEn; 
} 

    /** 
* Set activoBoolean 
* 
* @param string $activoBoolean 
* @return BannerHome 
*/ 
public function setActivo($activo) 
{ 
    $this->activo = $activo; 

    return $this; 
} 

/** 
* Get activoBoolean 
* 
* @return string 
*/ 
public function getActivo() 
{ 
    return $this->activo; 
} 

/** 
* Set ranking 
* 
* @param integer $ranking 
* @return BannerHome 
*/ 
public function setRanking($ranking) 
{ 
    $this->ranking = $ranking; 

    return $this; 
} 

/** 
* Get ranking 
* 
* @return integer 
*/ 
public function getRanking() 
{ 
    return $this->ranking; 
} 

public function setTranslatableLocale($locale) { 


    $this->locale = $locale; 


} 

} 

ADMIN

<?php 

namespace app\PibeBundle\Admin; 

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

class PibeAdmin extends Admin 
{ 
/** 
* @param DatagridMapper $datagridMapper 
*/ 
protected function configureDatagridFilters(DatagridMapper $datagridMapper) 
{ 
    $datagridMapper 
     //->add('id') 
     ->add('titulo') 
     //->add('texto') 
     ->add('activo') 
     ->add('ranking') 
    ; 
} 

/** 
* @param ListMapper $listMapper 
*/ 
protected function configureListFields(ListMapper $listMapper) 
{ 
    $listMapper 
     ->add('id') 
     ->add('titulo',null,array('required'=>false)) 
     //->add('imagenEs') 
     ->add('imagen',null,array(
      'template'=>"PibeBundle:Default:imagen.html.twig" 
     )) 
     ->add('activo',null,array('editable'=>true)) 
     ->add('ranking') 
     ->add('_action', 'actions', array(
      'actions' => array(
       'show' => array(), 
       'edit' => array(), 
       'delete' => array(), 
      ) 
     )) 
    ; 
} 

/** 
* @param FormMapper $formMapper 
*/ 
protected function configureFormFields(FormMapper $formMapper) 
{ 
    $idioma=$this->getRequest()->getLocale(); 

    $formMapper 
    ->add('imagen', 'sonata_type_model_list', array(
        'required' => false, 
        'label'=>'Imagen' 

        ), array(      
        'link_parameters' => array(
        'context' => 'pibe', 
        'provider' => 'sonata.media.provider.image' 

         ) 
        ) 
       ) 

    ; 


    if($idioma=='es'){ 
      $formMapper   

       ->add('logoEs', 'sonata_type_model_list', array(
        'required' => false, 
        'label'=>'Logo Español' 

        ), array(      
        'link_parameters' => array(
        'context' => 'pibe', 
        'provider' => 'sonata.media.provider.image' 

         ) 
        ) 
       ) 
       ->add('logoEn', 'sonata_type_model_list', array(
        'required' => false, 
        'label'=>'Logo Ingles' 

        ), array(      
        'link_parameters' => array(
        'context' => 'pibe', 
        'provider' => 'sonata.media.provider.image' 

         ) 
        ) 
       ) 

       ->add('titulo','textarea', array('attr' => array('class' => 'ckeditor'),'label'=>'Titulo Español','required'=>false)) 
       ->add('tituloEn','textarea', array('attr' => array('class' => 'ckeditor'),'label'=>'Titulo Ingles','data'=>'','required'=>false)) 
       ->add('script','text',array('label'=>'Script Video Español','required'=>false)) 
       ->add('scriptEn','text',array('label'=>'Script Video Ingles','data'=>'','required'=>false)) 
       ->add('texto','textarea', array('attr' => array('class' => 'ckeditor'),'label'=>'Texto Español','required'=>false)) 
       ->add('textoEn','textarea', array('attr' => array('class' => 'ckeditor'),'label'=>'Texto Ingles','data'=>'','required'=>false)) 

       ; 
     }else{ 
      $formMapper 

       ->add('tituloEn','textarea', array('attr' => array('class' => 'ckeditor'),'label'=>'Titulo Ingles','data'=>'','required'=>false)) 
       ->add('titulo','textarea', array('attr' => array('class' => 'ckeditor'),'label'=>'Titulo Español','required'=>false)) 
       ->add('scriptEn','textarea', array('attr' => array('class' => 'ckeditor'),'label'=>'Script Video Ingles','data'=>'','required'=>false)) 
       ->add('script','text',array('label'=>'Script Video Español','required'=>false)) 
       ->add('textoEn','textarea', array('attr' => array('class' => 'ckeditor'),'label'=>'Texto Ingles','data'=>'','required'=>false)) 
       ->add('texto','textarea', array('attr' => array('class' => 'ckeditor'),'label'=>'Texto Español','required'=>false)) 




       ; 
    } 
    $formMapper 
     ->add('activo') 
     ->add('ranking') 
    ; 



    $container = $this->getConfigurationPool()->getContainer(); 
    $em = $container->get('doctrine.orm.entity_manager'); 

    if($idioma=='es' && $this->getSubject()->getId()!=null){  


     //$titoriginal=$em->getRepository('HomeBundle:ImagenesHome')->find($this->getSubject()->getId());   
     // $titoriginal->setTranslatableLocale('en'); 
     //$em->refresh($titoriginal); 


     //buscamos su traduccion en la tabal de traducciones. 
     $repository = $em->getRepository('Gedmo\Translatable\Entity\Translation'); 
     $translations = $repository->findTranslations($this->getSubject()); 
     //rellenamos el campo con la traduccion. 
     if(count($translations)>0){ 

      if(array_key_exists("titulo",$translations['en'])){ 
      $formMapper->get('tituloEn')->setData($translations['en']['titulo']); 
      }  
     if(array_key_exists("texto",$translations['en'])){ 
      $formMapper->get('textoEn')->setData($translations['en']['texto']); 
      } 
     if(array_key_exists("script",$translations['en'])){ 
      $formMapper->get('scriptEn')->setData(trim($translations['en']['script'])); 
      }    
     }; 


    }else if($idioma=='en' && $this->getSubject()->getId()!=null){ 

     $titoriginal=$em->getRepository('PibeBundle:Pibe')->find($this->getSubject()->getId()); 
     //cambiamos el locale a 'es' para coger el texto en español 
     $titoriginal->setTranslatableLocale('en'); 
     $em->refresh($titoriginal); 
     //una vez que lo cogemos, volvemos a cambiar el locale a 'en' 
     $formMapper->get('tituloEn')->setData($titoriginal->getTitulo()); 
     $formMapper->get('textoEn')->setData($titoriginal->getTexto()); 
     $formMapper->get('scriptEn')->setData(trim($titoriginal->getScript())); 

     $titoriginal->setTranslatableLocale('es'); 
     $em->refresh($titoriginal); 

    } 





} 

/** 
* @param ShowMapper $showMapper 
*/ 
protected function configureShowFields(ShowMapper $showMapper) 
{ 
    $showMapper 
     ->add('id') 
     ->add('titulo') 
     ->add('texto') 
     ->add('activo') 
     ->add('ranking') 
    ; 
} 


public function prePersist($object) { 


     $container = $this->getConfigurationPool()->getContainer(); 
     $entityManager = $container->get('doctrine.orm.entity_manager'); 


     //insertar en español. 
     $object->setTitulo($object->getTitulo()); 
     $object->setTexto($object->getTexto()); 
     $object->setscript($object->getscript()); 
     $object->setTranslatableLocale('es'); 
     $entityManager->persist($object); 
     $entityManager->flush(); 

     //insertar en ingles. 
     $object->setTitulo($object->getTituloEn()); 
     $object->setTexto($object->getTextoEn()); 
     //$object->setscript($object->getscriptEn()); 
     if(!$object->getscriptEn()){ 
      $object->setscript(' '); 
     } 
     else{ 
      $object->setscript($object->getscriptEn()); 
     } 
     $object->setTranslatableLocale('en'); 
     $entityManager->persist($object); 
     $entityManager->flush(); 


} 

public function preUpdate($object) { 


     $container = $this->getConfigurationPool()->getContainer(); 
     $entityManager = $container->get('doctrine.orm.entity_manager'); 


     //insertar en español. 
     $object->setTitulo($object->getTitulo()); 
     $object->setTexto($object->getTexto()); 
     $object->setscript($object->getscript()); 
     $object->setTranslatableLocale('es'); 
     $entityManager->persist($object); 
     $entityManager->flush(); 

     //insertar en ingles. 
     $object->setTitulo($object->getTituloEn()); 
     $object->setTexto($object->getTextoEn()); 
     //$object->setscript($object->getscriptEn()); 
     if(!$object->getscriptEn()){ 
      $object->setscript(' '); 
     } 
     else{ 
      $object->setscript($object->getscriptEn()); 
     } 
     $object->setTranslatableLocale('en'); 
     $entityManager->persist($object); 
     $entityManager->flush(); 

} 


} 

Si je télécharger une image de 1500x1000 ses oeuvres parfaites: enter image description here enter image description here

Mais si e image e est 1920x1080 il doesnt œuvres: enter image description here Lorsque je clique crear il ajouter l'image Indifférent Fume: enter image description here

Le php renvoie une erreur 500 à partir du serveur, mais l'image est en uploads/médias. Et je havent définir une taille (hauteur/Largeur) limite

Répondre

0

L'os de probles ce dysfonctionnement est l'extension php php_fileinfo, avec elle désactivé je reçois l'erreur, avec elle a permis à tous les travaux comme prévu