2014-09-25 11 views
5

I numeri di telefono sono memorizzati in un database utilizzando char (10) e ad esempio sono 4155551212.Formattare un numero di telefono utilizzando Twig

Vorrei un modello Twig per visualizzarli come (415) 555-1212.

Come si raggiunge questo risultato migliore?

+0

Utilizzare 'substr()' ...? Questo è facile. Usa la tua immaginazione! –

+1

Crea estensione di ramoscello - http://symfony.com/doc/master/cookbook/templating/twig_extension.html –

+0

@ SverriM.Olsen. Non c'è 'substr()', ma penso che 'slice' funzionerà. – user1032531

risposta

9

Sarebbe bello non dover aggiungere questo filtro ogni volta, ma soddisferà le mie esigenze.

<?php 
require_once '../../../vendor/autoload.php'; 
Twig_Autoloader::register(); 
try { 
    $loader = new Twig_Loader_Filesystem('templates'); 
    $twig = new Twig_Environment($loader, array('debug' => true,)); 
    $twig->addExtension(new Twig_Extension_Debug()); 
    $twig->addFilter(new Twig_SimpleFilter('phone', function ($num) { 
     return ($num)?'('.substr($num,0,3).') '.substr($num,3,3).'-'.substr($num,6,4):'&nbsp;'; 
    })); 
    echo $twig->render('filter.html', array('phone'=>'4155551212')); 
} catch (Exception $e) { 
    die ('ERROR: ' . $e->getMessage()); 
} 
?> 

filter.html

{{ phone|phone }} 
+0

dandoti una meritata sovrabbondanza per questo unico buon padre! – r3wt

1
$numberPhone = '4155551212'; 
$firstChain = substr($numberPhone, 0, 3); 
$secondChain = substr($numberPhone, 3, 3); 
$thirdChain = substr($numberPhone, 6, 4); 
$formatedNumberPhone = '(' . $firstChain . ') ' . $secondChain . '-' . $thirdChain; 

echo $formatedNumberPhone; 

ecco la soluzione per coloro che hanno domanda simile su di esso.

Un po 'spiegazione su come substr() funziona:

Si prende tre argomenti in questo caso:

  1. La catena che si desidera modificare
  2. L'indice che rappresenta il luogo in cui la funzione inizierà il suo processo
  3. Quante lettere accentate si desidera conservare

Nota che puoi passare un valore negativo al secondo e al terzo argomento (vai al documento ufficiale per ulteriori informazioni).

In questo caso, sto prendendo il primo carattere del numero di telefono, quindi dirò alla funzione di iniziare da 0 e di mantenere 3 caratteri, quindi sembra che l'ho fatto: susbtr($numberPhone, 0, 3).

Spero che aiuti!

+0

Grazie per la risposta. So come farlo con PHP e farlo allo stesso modo di te, ma non con Twig. – user1032531

+0

Non ho mai usato Twig, anche se potreste farlo in php per evitare qualche reaserch complessa! –

+0

Sì, lo so, ma l'intero punto di Twig è separare la vista dalla logica. – user1032531

1

numero di telefono in formato US: {{PHONE_NUMBER | telefono | default ("-")}}

-2
Eu fiz assim: {{ p.number[:4] }} - {{ p.number[4:]}} 
I did that way: {{ p.number[:4] }} - {{ p.number[4:]}} 
Problemi correlati