Συμβουλές και κόλπα
Επεξεργαστές και IDE
Γράψτε πρότυπα σε έναν επεξεργαστή ή IDE που έχει υποστήριξη για Latte. Θα είναι πολύ πιο ευχάριστο.
- Το NetBeans IDE έχει ενσωματωμένη υποστήριξη
- PhpStorm: εγκαταστήστε το πρόσθετο Latte
στο
Settings > Plugins > Marketplace
- VS Code: αναζήτηση markerplace για Nette Latte + Neon ή Nette Latte templates plugin
- Sublime Text 3: στο Package Control βρείτε και εγκαταστήστε το πακέτο
Nette
και επιλέξτε Latte στοView > Syntax
- σε παλιούς επεξεργαστές χρησιμοποιήστε την επισήμανση Smarty για τα αρχεία .latte
Το πρόσθετο για το PhpStorm είναι πολύ προηγμένο και μπορεί να προτείνει τέλεια κώδικα PHP. Για να λειτουργήσει βέλτιστα, χρησιμοποιήστε τυποποιημένα πρότυπα.
Υποστήριξη για το Latte μπορεί επίσης να βρεθεί στον web code highlighter Prism.js και στον επεξεργαστή Ace.
Latte μέσα σε JavaScript ή CSS
Το Latte μπορεί να χρησιμοποιηθεί πολύ άνετα μέσα σε JavaScript ή CSS. Αλλά πώς να αποφύγετε το Latte να θεωρεί λανθασμένα τον κώδικα JavaScript ή το στυλ CSS ως ετικέτα Latte;
<style>
/* ERROR: interprets as tag {color} */
body {color: blue}
</style>
<script>
// ERROR: interprets as tag {id}
var obj = {id: 123};
</script>
Επιλογή 1
Αποφύγετε τις περιπτώσεις όπου ένα γράμμα ακολουθεί αμέσως μετά από
ένα {
, είτε εισάγοντας ένα κενό, ένα διάλειμμα γραμμής ή ένα
εισαγωγικό μεταξύ τους:
<style>
body {
color: blue
}
</style>
<script>
var obj = {'id': 123};
</script>
Επιλογή 2
Πλήρης απενεργοποίηση της επεξεργασίας των ετικετών Latte μέσα σε ένα στοιχείο που χρησιμοποιεί n:syntax:
<script n:syntax="off">
var obj = {id: 123};
</script>
Επιλογή 3
Αλλάξτε τη σύνταξη της ετικέτας Latte σε διπλές αγκύλες μέσα στο στοιχείο:
<script n:syntax="double">
var obj = {id: 123}; // this is JavaScript
{{if $cond}} alert(); {{/if}} // this is Latte tag
</script>
Στην JavaScript, μην βάζετε τη μεταβλητή μέσα σε εισαγωγικά.
Αντικατάσταση της ρήτρας use
Πώς να αντικαταστήσετε τις ρήτρες use
που χρησιμοποιούνται
στην PHP, ώστε να μην χρειάζεται να γράψετε ένα namespace όταν έχετε πρόσβαση
σε μια κλάση; Παράδειγμα PHP:
use Pets\Model\Dog;
if ($dog->status === Dog::StatusHungry) {
// ...
}
Επιλογή 1
Αντί της ρήτρας use
αποθηκεύστε το όνομα της κλάσης σε μια
μεταβλητή και στη συνέχεια αντί της Dog
χρησιμοποιήστε την
$Dog
:
{var $Dog = Pets\Model\Dog::class}
<div>
{if $dog->status === $Dog::StatusHungry}
...
{/if}
</div>
Επιλογή 2
Εάν το αντικείμενο $dog
είναι μια περίπτωση του Pets\Model\Dog
,
τότε μπορεί να χρησιμοποιηθεί το {if $dog->status === $dog::StatusHungry}
.
Παραγωγή XML στο Latte
Το Latte μπορεί να παράγει οποιαδήποτε μορφή κειμένου (HTML, XML, CSV, iCal,
κ.λπ.), ωστόσο, για να ξεφύγει σωστά από τα εμφανιζόμενα δεδομένα, πρέπει
να του πούμε ποια μορφή παράγουμε. Το {contentType}
χρησιμοποιείται για το
σκοπό αυτό.
{contentType application/xml}
<?xml version="1.0" encoding="UTF-8"?>
...
Στη συνέχεια, για παράδειγμα, μπορούμε να δημιουργήσουμε ένα sitemap με παρόμοιο τρόπο:
{contentType application/xml}
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" >
<url n:foreach="$urls as $url">
<loc>{$url->loc}</loc>
<lastmod>{$url->lastmod->format('Y-m-d')}</lastmod>
<changefreq>{$url->frequency}</changefreq>
<priority>{$url->priority}</priority>
</url>
</urlset>
Πέρασμα δεδομένων από ένα συμπεριλαμβανόμενο πρότυπο
Οι μεταβλητές που δημιουργούμε με το {var}
ή το {default}
στο
συμπεριλαμβανόμενο πρότυπο υπάρχουν μόνο σε αυτό και δεν είναι
διαθέσιμες στο συμπεριλαμβανόμενο πρότυπο. Αν θέλουμε να περάσουμε
κάποια δεδομένα από το συμπεριλαμβανόμενο πρότυπο πίσω στο
συμπεριλαμβανόμενο, μια από τις επιλογές είναι να περάσουμε ένα
αντικείμενο στο πρότυπο και να ορίσουμε τα δεδομένα σε αυτό.
Κύριο πρότυπο:
{* δημιουργεί ένα κενό αντικείμενο $vars *}
{var $vars = (object) null}
{include 'included.latte', vars: $vars}
{* περιέχει τώρα την ιδιότητα foo *}
{$vars->foo}
included.latte
:
{* εγγραφή δεδομένων στην ιδιότητα foo *}
{var $vars->foo = 123}