Nette Documentation Preview

syntax
Πώς να γράψετε Microsites
*************************

Φανταστείτε ότι πρέπει να δημιουργήσετε γρήγορα έναν μικρό ιστότοπο για μια επερχόμενη εκδήλωση της εταιρείας σας. Θα πρέπει να είναι απλή, γρήγορη και χωρίς περιττές επιπλοκές. Μπορεί να νομίζετε ότι ένα τόσο μικρό έργο δεν απαιτεί ένα ισχυρό πλαίσιο. Τι γίνεται όμως αν η χρήση του πλαισίου Nette μπορεί να απλοποιήσει και να επιταχύνει σημαντικά αυτή τη διαδικασία;

Ακόμα και όταν δημιουργείτε απλές ιστοσελίδες, δεν θέλετε να παραιτηθείτε από την άνεση. Δεν θέλετε να ανακαλύψετε ξανά τον τροχό. Νιώστε ελεύθεροι να είστε τεμπέληδες και να περιποιηθείτε τον εαυτό σας. Το πλαίσιο Nette μπορεί επίσης να χρησιμοποιηθεί άριστα ως μικροπλαίσιο.

Πώς θα μπορούσε να μοιάζει μια τέτοια μικροσελίδα; Για παράδειγμα, ολόκληρος ο κώδικας της ιστοσελίδας μπορεί να τοποθετηθεί σε ένα μόνο αρχείο `index.php` στον δημόσιο φάκελο:

```php
<?php

require __DIR__ . '/../vendor/autoload.php';

$configurator = new Nette\Bootstrap\Configurator;
$configurator->enableTracy(__DIR__ . '/../log');
$configurator->setTempDirectory(__DIR__ . '/../temp');

// δημιουργία ενός DI container με βάση τη διαμόρφωση στο config.neon
$configurator->addConfig(__DIR__ . '/../app/config.neon');
$container = $configurator->createContainer();

// να ρυθμίσετε τη δρομολόγηση
$router = new Nette\Application\Routers\RouteList;
$container->addService('router', $router);

// διαδρομή για τη διεύθυνση URL https://example.com/
$router->addRoute('', function ($presenter, Nette\Http\Request $httpRequest) {
	// ανιχνεύει τη γλώσσα του προγράμματος περιήγησης και ανακατευθύνει στη διεύθυνση URL /en ή /de κ.λπ.
	$supportedLangs = ['en', 'de', 'cs'];
	$lang = $httpRequest->detectLanguage($supportedLangs) ?: reset($supportedLangs);
	$presenter->redirectUrl("/$lang");
});

// διαδρομή για τη διεύθυνση URL https://example.com/cs nebo https://example.com/en
$router->addRoute('<lang cs|en>', function ($presenter, string $lang) {
	// εμφάνιση του κατάλληλου προτύπου, για παράδειγμα ../templates/en.latte
	$template = $presenter->createTemplate()
		->setFile(__DIR__ . '/../templates/' . $lang . '.latte');
	return $template;
});

// εκτελέστε την εφαρμογή!
$container->getByType(Nette\Application\Application::class)->run();
```

Όλα τα υπόλοιπα θα είναι πρότυπα που θα αποθηκεύονται στον γονικό φάκελο `/templates`.

Ο κώδικας PHP στο `index.php` [ρυθμίζει |bootstrap:] πρώτα [το περιβάλλον |bootstrap:], στη συνέχεια ορίζει τις [διαδρομές |application:routing#dynamic-routing-with-callbacks] και τέλος εκτελεί την εφαρμογή. Το πλεονέκτημα είναι ότι η δεύτερη παράμετρος της συνάρτησης `addRoute()` μπορεί να είναι ένα callable που εκτελείται όταν ανοίγει η αντίστοιχη σελίδα.


Γιατί να χρησιμοποιήσετε τη Nette για μικροσελίδες; .[#toc-why-use-nette-for-microsites]
----------------------------------------------------------------------------------------

- Οι προγραμματιστές που δοκίμασαν ποτέ [το Tracy |tracy:] δεν μπορούν να φανταστούν σήμερα την κωδικοποίηση χωρίς αυτό.
- Αλλά πάνω απ' όλα, θα αξιοποιήσετε το σύστημα templating [Latte |latte:], επειδή από μόλις 2 σελίδες, θα θέλετε να διαχωρίσετε τη [διάταξη και το περιεχόμενο |latte:template-inheritance].
- Και σίγουρα θέλετε να βασιστείτε στην [αυτόματη διαφυγή |latte:safety-first] για να αποφύγετε τα τρωτά σημεία XSS.
- Η Nette διασφαλίζει επίσης ότι σε περίπτωση σφάλματος, δεν θα εμφανίζονται ποτέ μηνύματα σφάλματος PHP, αλλά, αντίθετα, μια φιλική προς τον χρήστη σελίδα.
- Αν θέλετε να λαμβάνετε σχόλια από τους χρήστες, για παράδειγμα με τη μορφή φόρμας επικοινωνίας, μπορείτε επίσης να προσθέσετε [φόρμες |forms:] και [βάση δεδομένων |database:].
- Μπορείτε επίσης εύκολα να έχετε συμπληρωμένες φόρμες που [αποστέλλονται μέσω ηλεκτρονικού ταχυδρομείου |mail:].
- Ορισμένες φορές μπορεί να βρείτε την [προσωρινή αποθήκευση δεδομένων |caching:] χρήσιμη, για παράδειγμα, κατά τη λήψη και την εμφάνιση τροφοδοσιών.

Στη σημερινή εποχή, όπου η ταχύτητα και η αποδοτικότητα είναι το κλειδί, είναι σημαντικό να έχετε εργαλεία που σας επιτρέπουν να επιτυγχάνετε αποτελέσματα χωρίς περιττές καθυστερήσεις. Το πλαίσιο Nette προσφέρει ακριβώς αυτό - γρήγορη ανάπτυξη, ασφάλεια και ένα ευρύ φάσμα εργαλείων όπως το Tracy και το Latte που απλοποιούν τη διαδικασία. Απλά εγκαταστήστε μερικά πακέτα Nette και η κατασκευή ενός τέτοιου microsite γίνεται παιχνιδάκι. Και ξέρετε ότι δεν υπάρχουν κρυφά κενά ασφαλείας.

Πώς να γράψετε Microsites

Φανταστείτε ότι πρέπει να δημιουργήσετε γρήγορα έναν μικρό ιστότοπο για μια επερχόμενη εκδήλωση της εταιρείας σας. Θα πρέπει να είναι απλή, γρήγορη και χωρίς περιττές επιπλοκές. Μπορεί να νομίζετε ότι ένα τόσο μικρό έργο δεν απαιτεί ένα ισχυρό πλαίσιο. Τι γίνεται όμως αν η χρήση του πλαισίου Nette μπορεί να απλοποιήσει και να επιταχύνει σημαντικά αυτή τη διαδικασία;

Ακόμα και όταν δημιουργείτε απλές ιστοσελίδες, δεν θέλετε να παραιτηθείτε από την άνεση. Δεν θέλετε να ανακαλύψετε ξανά τον τροχό. Νιώστε ελεύθεροι να είστε τεμπέληδες και να περιποιηθείτε τον εαυτό σας. Το πλαίσιο Nette μπορεί επίσης να χρησιμοποιηθεί άριστα ως μικροπλαίσιο.

Πώς θα μπορούσε να μοιάζει μια τέτοια μικροσελίδα; Για παράδειγμα, ολόκληρος ο κώδικας της ιστοσελίδας μπορεί να τοποθετηθεί σε ένα μόνο αρχείο index.php στον δημόσιο φάκελο:

&lt;?php

require __DIR__ . '/../vendor/autoload.php';

$configurator = new Nette\Bootstrap\Configurator;
$configurator->enableTracy(__DIR__ . '/../log');
$configurator->setTempDirectory(__DIR__ . '/../temp');

// δημιουργία ενός DI container με βάση τη διαμόρφωση στο config.neon
$configurator->addConfig(__DIR__ . '/../app/config.neon');
$container = $configurator->createContainer();

// να ρυθμίσετε τη δρομολόγηση
$router = new Nette\Application\Routers\RouteList;
$container->addService('router', $router);

// διαδρομή για τη διεύθυνση URL https://example.com/
$router->addRoute('', function ($presenter, Nette\Http\Request $httpRequest) {
	// ανιχνεύει τη γλώσσα του προγράμματος περιήγησης και ανακατευθύνει στη διεύθυνση URL /en ή /de κ.λπ.
	$supportedLangs = ['en', 'de', 'cs'];
	$lang = $httpRequest->detectLanguage($supportedLangs) ?: reset($supportedLangs);
	$presenter->redirectUrl("/$lang");
});

// διαδρομή για τη διεύθυνση URL https://example.com/cs nebo https://example.com/en
$router->addRoute('<lang cs|en>', function ($presenter, string $lang) {
	// εμφάνιση του κατάλληλου προτύπου, για παράδειγμα ../templates/en.latte
	$template = $presenter->createTemplate()
		->setFile(__DIR__ . '/../templates/' . $lang . '.latte');
	return $template;
});

// εκτελέστε την εφαρμογή!
$container->getByType(Nette\Application\Application::class)->run();

Όλα τα υπόλοιπα θα είναι πρότυπα που θα αποθηκεύονται στον γονικό φάκελο /templates.

Ο κώδικας PHP στο index.php ρυθμίζει πρώτα το περιβάλλον, στη συνέχεια ορίζει τις διαδρομές και τέλος εκτελεί την εφαρμογή. Το πλεονέκτημα είναι ότι η δεύτερη παράμετρος της συνάρτησης addRoute() μπορεί να είναι ένα callable που εκτελείται όταν ανοίγει η αντίστοιχη σελίδα.

Γιατί να χρησιμοποιήσετε τη Nette για μικροσελίδες;

  • Οι προγραμματιστές που δοκίμασαν ποτέ το Tracy δεν μπορούν να φανταστούν σήμερα την κωδικοποίηση χωρίς αυτό.
  • Αλλά πάνω απ' όλα, θα αξιοποιήσετε το σύστημα templating Latte, επειδή από μόλις 2 σελίδες, θα θέλετε να διαχωρίσετε τη διάταξη και το περιεχόμενο.
  • Και σίγουρα θέλετε να βασιστείτε στην αυτόματη διαφυγή για να αποφύγετε τα τρωτά σημεία XSS.
  • Η Nette διασφαλίζει επίσης ότι σε περίπτωση σφάλματος, δεν θα εμφανίζονται ποτέ μηνύματα σφάλματος PHP, αλλά, αντίθετα, μια φιλική προς τον χρήστη σελίδα.
  • Αν θέλετε να λαμβάνετε σχόλια από τους χρήστες, για παράδειγμα με τη μορφή φόρμας επικοινωνίας, μπορείτε επίσης να προσθέσετε φόρμες και βάση δεδομένων.
  • Μπορείτε επίσης εύκολα να έχετε συμπληρωμένες φόρμες που αποστέλλονται μέσω ηλεκτρονικού ταχυδρομείου.
  • Ορισμένες φορές μπορεί να βρείτε την προσωρινή αποθήκευση δεδομένων χρήσιμη, για παράδειγμα, κατά τη λήψη και την εμφάνιση τροφοδοσιών.

Στη σημερινή εποχή, όπου η ταχύτητα και η αποδοτικότητα είναι το κλειδί, είναι σημαντικό να έχετε εργαλεία που σας επιτρέπουν να επιτυγχάνετε αποτελέσματα χωρίς περιττές καθυστερήσεις. Το πλαίσιο Nette προσφέρει ακριβώς αυτό – γρήγορη ανάπτυξη, ασφάλεια και ένα ευρύ φάσμα εργαλείων όπως το Tracy και το Latte που απλοποιούν τη διαδικασία. Απλά εγκαταστήστε μερικά πακέτα Nette και η κατασκευή ενός τέτοιου microsite γίνεται παιχνιδάκι. Και ξέρετε ότι δεν υπάρχουν κρυφά κενά ασφαλείας.