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 :

[Twig] Couper un texte [2.x]


Sujet :

Symfony PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Responsable d’exploitation informatique
    Inscrit en
    Novembre 2004
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable d’exploitation informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 134
    Points : 85
    Points
    85
    Par défaut [Twig] Couper un texte
    Salut,

    Je voudrais être capable de couper un texte (long) dans une de mes vues twig.
    Je sais que je peux utiliser slice mais je ne veux pas le couper tout le temps de la même manière. De plus, si j'ai des balises HTMl, ça risque de les couper.

    Je voudrais être capable de détecter un élément (une balise, un truc perso, peut importe) et couper à cette endroit.

    Merci d'avance.

  2. #2
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Juillet 2013
    Messages : 6
    Points : 7
    Points
    7
    Par défaut
    Une solution pour un attribut d'une entité -- ce n'est sûrement pas la seule.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        public function __toString()
        {
            $texte = '['.$this->auteur.'] '.$this->titre.' - '.$this->autre;
     
            // si le texte fait plus de 90 caractères, on le coupe
                // ATTENTION quand on coupe de l'UTF-8, il faut ne pas tomber au mauvais endroit
                //  donc mb_substr(..., 'UTF-8') au lieu de substr(...)
            if (mb_strlen($texte, 'UTF-8') > 90) $texte = mb_substr($texte, 0, 86, 'UTF-8').' ...';
     
            return $texte;
        }
    Au lieu de le faire dans __toString(), on peut le faire dans un getter ajouté à la classe.

  3. #3
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2011
    Messages
    477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2011
    Messages : 477
    Points : 677
    Points
    677
    Par défaut
    Bonjour,

    Dans twig, il y a une extension qui existe qui truncate avec plein d'options sympa.

    Un bout d'exemple

  4. #4
    Membre régulier
    Homme Profil pro
    Responsable d’exploitation informatique
    Inscrit en
    Novembre 2004
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable d’exploitation informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 134
    Points : 85
    Points
    85
    Par défaut
    okapi63 : Je ne veux pas le faire en php mais sur un template Twig.
    stephan.78 :Comme indiqué dans mon 1er poste, je ne veux pas travailler avec une longueur fixe. J'ai besoin de trouver la position d'un élément dans mon texte et d'utiliser cette position pour couper le texte.

  5. #5
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2011
    Messages
    477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2011
    Messages : 477
    Points : 677
    Points
    677
    Par défaut
    Tu peux créer une extension Twig qui réponds à ton besoin, regarde du coté des filters

  6. #6
    Membre régulier
    Homme Profil pro
    Responsable d’exploitation informatique
    Inscrit en
    Novembre 2004
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable d’exploitation informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 134
    Points : 85
    Points
    85
    Par défaut
    Merci pour ta réponse. J'ai vu rapidement ce qu'on pouvait faire avec les filtres et ça à l'air intéressant.
    Je suis débutant sur Symfony2 donc je ne connais pas encore tous les rouages.

    Je ferme le sujet mais j'essayerais de poster ma soluce si jamais ça peut servir à d'autre.

  7. #7
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2011
    Messages
    477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2011
    Messages : 477
    Points : 677
    Points
    677
    Par défaut
    Pas de soucis

  8. #8
    Membre régulier
    Homme Profil pro
    Responsable d’exploitation informatique
    Inscrit en
    Novembre 2004
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable d’exploitation informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 134
    Points : 85
    Points
    85
    Par défaut
    Voici la solution :

    • Création d'une extension

    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
    <?php
    //Acme\DemoBundle\Twig\SubStringExtension.php
    namespace Acme\DemoBundle\Twig;
     
    class SubStringExtension extends \Twig_Extension
    {
     
        /**
         * @return array
         */
        public function getFilters()
        {
            return array(
                'substring' => new \Twig_Filter_Method($this, 'subStringFilter'),
            );
        }
     
        /**
         * @param $text Le texte complet
         * @param $lookfor La chaîne à trouver dans $text
         * @return string Le texte couper à partir de $lookfor (inclus)
         */
        public function subStringFilter($text, $lookfor)
        {
            $indexof = strpos($text, $lookfor);
            return substr($text,0,$indexof);
        }
     
        /**
         * Returns the name of the extension.
         *
         * @return string The extension name
         */
        public function getName()
        {
            return 'substring_extension';
        }
    }
    • Déclaration du service:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #Acme\DemoBundle\Resources\config\service.yml
    acme_demo.twig.substring_extension:
            class: Acme\DemoBundle\Twig\SubStringExtension
            tags:
                - { name: twig.extension }
    • Implémentation dans une vue Twig:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {{ myMessage|substring('#CUT#') }}

  9. #9
    Futur Membre du Club
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mars 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 5
    Points : 7
    Points
    7
    Par défaut
    Super

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 31/07/2008, 16h11
  2. Couper un texte trop long
    Par cirano dans le forum Contribuez / Téléchargez Sources et Outils
    Réponses: 1
    Dernier message: 10/01/2008, 13h06
  3. Couper du texte dans un TEdit ou un TMemo
    Par AT dans le forum Débuter
    Réponses: 11
    Dernier message: 05/12/2007, 08h12
  4. [Tableaux] Couper un texte tous les xx mots
    Par sonno dans le forum Langage
    Réponses: 8
    Dernier message: 15/07/2007, 22h46

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