From 654a9cae43358c7eecf3b522e9876aa7815e2453 Mon Sep 17 00:00:00 2001
From: Fabio Bas
-We have created a default page Home.page using the PRADO command line tool. The page is relatively static because it does not containt dynamic content. In this section, we will create an interactive page named Contact.
+We have created a default page Home.page using the PRADO command line tool. The page is relatively static because it does not containt dynamic content. In this section, we will create an interactive page named Contact.
@@ -17,7 +17,7 @@ To create the Contact page, we need two files under the pages
Creating Contact Page
@@ -35,7 +35,7 @@ We first create the template file for the Contact page.
-We use template to organize the presentational layout of the feedback form. In the template, we use textboxes to collect user's name, email and feedback. And we use validators to ensure that the user provides all these information before submitting the feedback form. The whole template is as follows, +We use template to organize the presentational layout of the feedback form. In the template, we use textboxes to collect user's name, email and feedback. And we use validators to ensure that the user provides all these information before submitting the feedback form. The whole template is as follows,
-As we can see that the template looks very similar to a normal HTML page. The main difference is that the template contains a few <com:> tags. Each <com:> tag refers to a control whose properties are being initialized with name-value pairs in the tag. For example, the <com:TButton> refers to the TButton control which displays a button that users can click on to submit the feedback form. For complete template syntax, please refer to the Quickstart Tutorial. +As we can see that the template looks very similar to a normal HTML page. The main difference is that the template contains a few <com:> tags. Each <com:> tag refers to a control whose properties are being initialized with name-value pairs in the tag. For example, the <com:TButton> refers to the TButton control which displays a button that users can click on to submit the feedback form. For complete template syntax, please refer to the Quickstart Tutorial.
@@ -117,10 +117,10 @@ Below we summarize the controls that are used in the page template:
-We start by setting up the directories and the files that are required by most PRADO applications. We use the PRADO command line tool to achieve this goal. +We start by setting up the directories and the files that are required by most PRADO applications. We use the PRADO command line tool to achieve this goal.
@@ -11,7 +11,7 @@ Assume blog is the name of the directory to hold the whole blog system,
-Under the blog directory, we run the PRADO command line tool with the following command (replace path/to with the actual path to the PRADO framework installation): +Under the blog directory, we run the PRADO command line tool with the following command (replace path/to with the actual path to the PRADO framework installation):
-The optional XML file application.xml contains the application configuration. Its main purpose is to customize in a configurable fashion the application instance created in the entry script. For example, we may enable the logging feature for our blog system with the help of application configuration. +The optional XML file application.xml contains the application configuration. Its main purpose is to customize in a configurable fashion the application instance created in the entry script. For example, we may enable the logging feature for our blog system with the help of application configuration.
@@ -71,11 +71,11 @@ The file application.xml we have now is nearly empty. In fact, we may s
-The homepage (also called default page) Home.page is the only page created by the PRADO command line tool. It is the content in this file that shows up in the browser when visiting the URL http://hostname/blog/index.php. +The homepage (also called default page) Home.page is the only page created by the PRADO command line tool. It is the content in this file that shows up in the browser when visiting the URL http://hostname/blog/index.php.
-Content in the file Home.page uses the PRADO template format, which is mostly like HTML enhanced with a few PRADO-specific tags. For example, in Home.page we see the following pure HTML content: +Content in the file Home.page uses the PRADO template format, which is mostly like HTML enhanced with a few PRADO-specific tags. For example, in Home.page we see the following pure HTML content:
-The pages directory is the root page directory holding all pages in a PRADO application. It bears an analogy to the htdocs directory for the Apache httpd Web server. +The pages directory is the root page directory holding all pages in a PRADO application. It bears an analogy to the htdocs directory for the Apache httpd Web server.
diff --git a/demos/blog-tutorial/protected/pages/Day1/ShareLayout.page b/demos/blog-tutorial/protected/pages/Day1/ShareLayout.page index 6115ef22..a8d4b5bd 100755 --- a/demos/blog-tutorial/protected/pages/Day1/ShareLayout.page +++ b/demos/blog-tutorial/protected/pages/Day1/ShareLayout.page @@ -3,11 +3,11 @@
-In this section, we will use the master/content feature of PRADO to share common layout among pages. Common layout refers to the area that is the same or largely the same for a set of pages. For example, in our blog system, all pages will share the same header, footer and side-bar containing shortcut links. A straightforward implementation is to repeat the common layout in every page. However, this approach is prone to error and is hard to maintain. The master/content feature allows us to treat the common layout as a control which centralizes the logic and presentation of the common layout for every page. +In this section, we will use the master/content feature of PRADO to share common layout among pages. Common layout refers to the area that is the same or largely the same for a set of pages. For example, in our blog system, all pages will share the same header, footer and side-bar containing shortcut links. A straightforward implementation is to repeat the common layout in every page. However, this approach is prone to error and is hard to maintain. The master/content feature allows us to treat the common layout as a control which centralizes the logic and presentation of the common layout for every page.
@@ -69,7 +69,7 @@ class MainLayout extends TTemplateControl
-Besides <com:TContent>, we also see another new tag <%@ %> in the above, which is called template control tag. It contains name-value pairs which are used to initialize the corresponding properties for the template owner, namely, the Contact page. +Besides <com:TContent>, we also see another new tag <%@ %> in the above, which is called template control tag. It contains name-value pairs which are used to initialize the corresponding properties for the template owner, namely, the Contact page.
-By setting MasterClass property as Application.layouts.MainLayout, we instruct the Contact page to use MainLayout as its master. Here, we are using the namespace format to refer to the MainLayout class. +By setting MasterClass property as Application.layouts.MainLayout, we instruct the Contact page to use MainLayout as its master. Here, we are using the namespace format to refer to the MainLayout class.
-We can also specify master in application configuration or page configuration. The following shows the updated application configuration for our blog system: +We can also specify master in application configuration or page configuration. The following shows the updated application configuration for our blog system:
-Nous avons créé une page par défaut Home.page en utilisant les outils en ligne de commande de PRADO. Cette page est relativement statique parce qu'elle ne contient que du contenu HTML. Dans cette session, nous allons créer une page dynamique dénommée Contact. -
- --Le but de cette page est de collecter les retours d'informations des utilisateurs Web concernant notre outil de blog. Pour atteindre ce but, nous envisageons d'utiliser un formulaire qui sera à remplir. Dans ce formulaire, nous demanderons le nom de l'utilisateur, son adresse email et son commentaire. Après que le formulaire ai été rempli et envoyé, un email avec le commentaire sera envoyé à l'administrateur. -
- --Pour créer la page Contact, nous avons besoin de 2 fichiers dans le dossier pages : le fichier de gabarit Contact.page et le fichier de classe PHP Contact.PHP. -
- - - --Nous allons premièrement créer le fichier gabarit de la page Contact. -
- --Nous utilisons un fichier gabarit pour organiser la présentation de notre formulaire. Dans notre gabarit, nous utilisons des champs de saisie pour collecter le nom de l'utilisateur, son email et son commentaire. D'autre part, nous utilisons des validateurs pour nous assurer que l'utilisateur a bien fourni les éléments avant d'envoyer le formulaire. Le contenu complet du gabarit est le suivant, -
- -Veuillez remplir le formulaire suivant pour me laisser vos impressions au sujet de mon blog. Merci !
- -<com:TForm> - -Votre nom: -<com:TRequiredFieldValidator ControlToValidate="Name" - ErrorMessage="Veuillez indiquer votre nom." - Display="Dynamic" /> -
-Comme vous pouvez le voir, un fichier gabarit ressemble énormément à un fichier HTML classique. La principale différence concerne le fichier gabarit qui contient quelques balises <com:>. Chaque balise <com:> fait référence à un contrôle dont les propriétés sont initialisées grâce aux paires nom-valeur de la balise. Par exemple, la balise <com:TButton> fait référence au contrôle TButton qui affiche un bouton permettant à l'utilisateur de soumettre le formulaire. Pour une syntaxe complète, veuillez vous référer au Tutoriel de démarrage rapide.
-
-
-Avant le contrôle TTextBox, le gabarit utilise aussi plusieurs validateurs qui permettent de s'assurer que les données saisies sont bien conformes à notre attente. Par exemple, pour nous assurer que l'adresse email est valide, nous utilisons les deux validateurs suivants, -
- --Ci-dessous, un résumé des contrôles utilisés dans le gabarit : -
- --Nous allons maintenant créer le fichier de classe PHP Contact.PHP. Ce fichier est nécessaire parce que nous devons agir après la soumission du formulaire. -
- --Notez les lignes dans le fichier gabarit. Elles indiquent que lorsque l'utilisateur soumet le formulaire, la méthode submitButtonClicked() doit être appelé. Ici, OnClick est le nom de l'évènement et la méthode correspondante doit être défini dans le fichier de classe PHP. -
- --Nous écrirons donc le fichier de classe suivant : -
- --Le code précédent est largement explicite. En fait, nous avons juste montré le principe d'un gestionnaire d'évènement. Dans le gestionnaire d'évènement submitButtonClicked(), nous récupérons les éléments saisies par l'utilisateur. Par exemple, $this->Name->Text retourne la valeur de la propriété Text du contrôle Name qui est un contrôle permettant la saisie du nom de l'utilisateur. -
- --Notre nouvelle page Contact peut être testée en naviguant à l'URL http://hostname/blog/index.PHP?page=Contact. Si vous cliquez sur le bouton "envoyer" sans avoir saisi de données, vous verrez apparaitre des messages d'erreurs à côté des champs de saisie. Si vous entrez toutes les informations nécessaires, la méthode mailFeedback() sera appelée. -
- - - --Une amélioration possible à notre page serait d'afficher un message de confirmation après que l'utilisateur ai envoyé le formulaire. Il serait aussi envisageable de rediriger le navigateur vers une adresse différente si toutes les informations ont été saisies correctement. Nous laisserons aux lecteurs la mise en place de ces fonctionnalités. -
- --Nous commencerons par la mise en place de la structure des dossiers et fichiers requis par la plupart des applications développées avec PRADO. Nous allons utiliser les outils en ligne de commande pour atteindre ce but. -
- -Nous partons du principe que le nom du dossier qui contiendra l'application est blog et que l'URL qui permet d'accéder à ce dossier est : http://hostname/blog/ (remplacer hostname par le nom de votre serveur). -
- -A l'intérieur du dossier blog, nous utilisons les outils en ligne de commande avec comme commande (remplacer path/to par le chemin d'installation du framework PRADO): -
--L'utilisation de cette commande permet de créer la structure de dossier et fichiers suivante: -
- - - --Nous avons dorénavant, un squellette d'application PRADO accessible par l'URL http://hostname/blog/index.php et qui affiche une page contenant le message "Welcome to PRADO". -
- --Il est de notre intérêt d'en apprendre plus à propos des dossiers et fichiers que nous venons de créer. -
- --Toutes les applications PRADO ont un point d'entrée, habituellement nommé index.php. Dans la plupart des cas, c'est le seul script qui est directement accessible par les utilisateurs. Cela réduit les risques que les utilisateurs puissent lancer des scripts serveur auquels ils ne devraient pas avoir accès. -
- --Le but principal de ce script est d'initialiser l'environnement PRADO et de gérer toutes les requêtes utilisateurs. Ce script contient habituellement les commandes PHP suivantes, -
- --Le fichier optionnel XML application.xml contient la configuration de l'application. Son but principal est de permettre de configurer l'application qui sera créée par le script principal. Par exemple, nous pouvons activer le système de log pour notre application par le biais du fichier de configuration. -
- --Le fichier application.xml est pour le moment presque vide. De ce fait, nous pouvons le supprimer parce que l'application n'utilise pour le moment que des fonctionnalités de base. Au fur et à mesure que nous avancerons, nous ferons référence régulièrement au fichier application.xml et vous expliquerons comment configurer l'application. -
- - --La page d'accueil Home.page (aussi dénommée page par défaut) est la seule page créée par les outils en ligne de commande de PRADO. C'est le contenu de ce fichier qui est affiché quand l'utilisateur navigue à l'adresse http://hostname/blog/index.php. -
- --Le contenu du fichier Home.page respecte le format de template qui pour la plupart du temps est du code HTML agrémenté de quelques balises spécifiques à PRADO. Par exemple, dans Home.page nous voyons du code HTML pur : -
- --Le dossier protected, aussi connu sous le nom chemin de base de l'application, est le dossier racine qui contient les pages, les gabarits, les fichiers de configuration, les données, etc. Le nom protected indique que ce dossier doit être masqué des personnes qui consultent le site, ceci parce que les fichiers dans ce dossier contiennent la plupart du temps des données sensibles. -
- --Les différents serveurs Web ont différents moyens de "protéger" un dossier. Pour Apache, le moyen le plus simple est de créer dans le dossier un fichier nommé .htaccess avec le contenu deny from all. -
- - --Les dossiers protected/runtime et assets sont deux dossiers qui doivent avoir l'autorisation "en écriture" pour le serveur Web. Le dossier runtime contient des données sensibles (ie: fichier de configuration déjà analysé) générées à l'exécution de PRADO tandis que le dossier assets contient les ressources qui doivent être publiques (ie: les images, les fichiers javascript). -
- --The pages directory is the root page directory holding all pages in a PRADO application. It bears an analogy to the htdocs directory for the Apache httpd Web server. -
- --Nous avons déjà vu comment accéder la page d'accueil. Pour accéder à n'importe quelle page situé dans le dossier pages, il faut utiliser l'URL suivante http://hostname/blog/index.php?page=chemin.vers.NomdelaPage. En fonction de cette URL, PRADO recherche une page dénommée NomdelaPage dans le dossier pages/chemin/vers. L'URL que nous avons utilisée précédemment pour accéder à la page d'accueil correspond à http://hostname/blog/index.php?page=Home. - - -
-Il est tout à fait possible de personnaliser le nom et l'emplacement des fichiers et dossiers décrit précédemment. -
- --Par exemple, pour améliorer la sécurité, certains pourraient désirer déplacer la totalité du dossier protected à un emplacement inaccessible par le Web. Pour faire cela, utilisez la commande PHP suivante pour initialiser l'instance de l'application PRADO dans le script principal : -
- --Pour changer l'emplacement du dossier racine des pages et le nom de la page d'accueil, il est possible de modifier le fichier de configuration application.xml de cette manière : -
- - --En avançant dans l'apprentissage de PRADO, vous verrez que PRADO est très souple et qu'il est possible de personnaliser la plupart des comportements de base. Nous décrirons d'autres techniques au fur et à mesure de ce tutoriel. -
- --Dans cette section, nous allons utiliser la fonctionnalité gabarit principal/contenu de PRADO pour partager une mise en page commune sur tout notre site. Les mises en page communes font référence aux parties qui sont identiques ou presque pour un ensemble de pages. Par exemple, dans notre outil de blog, toutes les pages partagent le même entête, pied de page et la même barre latérale contenant les liens. La solution la plus radicale est de répéter sur chaque page les parties communes. Par contre, cette approche est une source d'erreurs et difficile à maintenir. La fonctionnalité gabarit principal/contenu nous permets de traiter les parties communes comme un contrôle qui centralise la logique applicative et la présentation de chaque page. -
- --Nous allons maintenant créer le gabarit principal MainLayout qui représente les parties communes partagées par toutes nos pages. Le contrôle MainLayout est un contrôle de gabarit qui hérite de TTemplateControl. Il a besoin d'un fichier de gabarit MainLayout.tpl et d'un fichier de classe MainLayout.php situés dans le même dossier. Pour faciliter la maintenance, nous allons créer le nouveau dossier protected/layouts pour les accueillir. -
- - - --Pour le moment, MainLayout contient seulement un entête simple et un pied de page, comme décrit ci-après. Plus tard, nous ajouterons une barre latérale. Les lecteurs sont encouragés à ajouter des fonctionnalités. -
- --Ci-dessus, le contenu du fichier de gabarit MainLayout.tpl. Trois nouvelles balises sont utilisées. -
- --Le fichier de classe MainLayout.php est très simple : -
- --Pour utiliser notre gabarit principal nouvellement créé, nous allons modifier nos fichiers Home.page et Contact.page. En particulier, nous devons supprimer les entêtes et pied de page parce que le gabarit principal a la responsabilité de les afficher ; par ailleurs, nous devons indiquer aux deux pages que leur gabarit principal est MainLayout. -
- --Ci-dessous, le contenu de Contact.page après les modifications : -
- -Veuillez remplir le formulaire suivant pour me laisser vos impressions au sujet de mon blog. Merci !
- -...champs de saisie et validateurs pour le nom d'utilisateur... - -...champs de saisie et validateurs pour l'email... - -...champs de saisie et validateurs pour le commentaire... - -<com:TButton Text="Envoyer" OnClick="submitButtonClicked" /> - -</com:TContent> --Le contenu entre les balises <com:TContent> sera inséré dans l'emplacement réservé par <com:TContentPlaceHolder> dans le gabarit principal. -
- --A côté de la balise <com:TContent>, nous avons vu une nouvelle balise <%@ %>, qui est dénommé une balise de contrôle de gabarit. Elle contient des paires nom-valeur utilisées pour initialiser les propriétés correspondantes du propriétaire de gabarit, dans notre cas, la page Contact. -
- --En définissant la propriété MasterClass comme étant de type Application.layouts.MainLayout, nous avons indiqué à la page Contact d'utiliser MainLayout comme gabarit principal. Ici, nous avons utilisé un espace de noms pour nous référer à la classe MainLayout. -
- --Il y a plusieurs alternatives pour spécifier le gabarit principal. -
- --Vous pouvez définir le gabarit principal comme ci-dessous pour pouvoir en changer dynamiquement. -
- --Ci-dessus, nous indiquons d'utiliser le gabarit principal MasterClass dans la méthode onPreInit() qui est héritée de TPage. Cette méthode est appelé par PRADO juste après que l'instance de la page soit créée. Nous pouvons ainsi déclarer au moment où la page est requise quel gabarit principal utiliser. Par exemple, quand la page est requise par un utilisateur enregistré, nous pouvons utiliser le gabarit A, et le gabarit B si l'utilisateur qui demande la page est un invité. -
- --Nous pouvons aussi spécifier quel gabarit principal utiliser dans le fichier de configuration de l'application ou encore dans le fichier de configuration de la page. Ci-dessous, le fichier de configuration de l'application modifié pour notre blog. -
- --En faisant cela, nous évitons de définir le gabarit principal dans chaque page. Si nous décidons d'utiliser un autre gabarit principal, il nous suffit de changer le fichier de configuration de l'application. Pour cette raison, dans notre blog, nous utiliserons cette approche. -
- --Kita telah membuat halaman standar Home.page menggunakan piranti baris perintah PRADO. Halaman relatif statis karena ia tidak berisi konten dinamis. Dalam bagian ini, kita akan membuat halaman interaktif bernama Contact. -
- --Kegunaan dari halaman Contact adalah untuk mengumpulkan umpan balik dari para pengguna sistem blog kita. Untuk melaksanakan tujuan ini, kita merencanakan untuk menyajikan para pengguna dengan sebuah formulir umpan balik yang harus diisi. Dalam formulir ini, kita akan mengharuskan para pengguna untuk menyediakan namanya, alamat email, dan konten umpan balik. Setelah formulir diisi dan dikirimkan, email yang berisi umpan balik akan dikirimkan ke administrator situs. -
- --Untuk membuat halaman Contact, kita memerluka dua file di bawah direktori pages: file template halaman Contact.page dan file kelas halaman Contact.php. -
- - - --Pertama kita membuat file template untuk halaman Contact. -
- --Kita menggunakan template untuk menghatur tata letak penyajian terhadap formulir umpan balik. Dalam template, kita menggunakan kotak teks untuk mengumpulkan nama pengguna, email dan umpan balik. Dan kita menggunakan validator guna memastikan bahwa pengguna menyediakan semua informasi ini sebelum mengirimkan formulir umpan balik. Seluruh template adalah sebagai berikut, -
- -Please fill out the following form to let me know your feedback on my blog. Thanks!
- -<com:TForm> - -Your Name: -<com:TRequiredFieldValidator ControlToValidate="Name" - ErrorMessage="Please provide your name." - Display="Dynamic" /> --Seperti kita lihat bahwa template terlihat sangat mirip dengan halaman HTML normal. Perbedaan utamanya adalah bahwa template berisi beberapa tag <com:>. Setap tag <com:> merujuk ke sebuah kontrol yang propertinya diinisialisasi dengan pasangan nama-nilai dalam tag. Sebagai contoh, <com:TButton> merujuk ke kontrol TButton guna menampilkan sebuah tombol di mana pengguna dapat di klik pengguna untuk mengirimkan formulir umpan balik. Untuk sintaks lengkap template, silahkan rujuk Tutorial Cepat. -
- --Selain kontrol TTextBox, template juga menggunakan banyak kontrol validator yang memastikan input pengguna memuaskan aturan validasi spesifik. Sebagai contoh, untuk memastikan alamat email sah yang dilengkapi, kita menggunakan dua validator untuk memvalidasi kotak teks "email", seperti ditampilkan dalam kode berikut: -
- --Di bawah ini kita meringkas kontrol yang dipakai dalam template halaman: -
- --Sekarang kita membuat kelas halaman Contact.php. Alasan kita membutuhkan kelas halaman adalah karena kita perlu merespon umpan balik yang dikirimkan oleh pengguna. - -
-Perhatikan dalam template kita mempunyai baris berikut. Template secara esensi menyatakan bahwa saat pengguna mengklik tombol, ia harus memanggil metode submitButtonClicked(). Di sini OnClick adalah nama dari event yang diklik pengguna, dan metode harus didefinisikan dalam kelas halaman. -
- --Selanjutnya kita menuliskan kelas halaman seperti berikut: -
- --Kode di atas sebagian besar cukup jelas. Kenyataannya, kami hanya menampilkan skema pemrograman pengendalian-event. Dalam pengendali event submitButtonClicked(), kita mengambil input pengguna. Sebagai contoh, $this->Name->Text mengembalikan nilai properti Text dari kontrol Name yang merupakan kotak teks yang mengumpulkan informasi nama pengguna. -
- --Contact yang baru saja kita buat dapat kita uji dengan URL http://hostname/blog/index.php?page=Contact. Jika kita mengklik pada tombol submit tanpa memasukan informasi apapun, kita akan melihat pesan kesalahan muncil di sebelah kotak teks terkait. Jika kita memasukan semua informasi yang diperlukan, metode mailFeedback() akan dipanggil. -
- - - --Peningkatan berikutnya terhadap halaman ini adalah untuk menampilkan beberapa pesan konfirmasi pada halaman setelah pengguna mengirimkan umpan balik. Dan kemungkinan, browser akan dialihkan ke halaman lain jika pengiriman berhasil. Kita akan membiarkan tugas ini bagi para pembaca kita. -
- --Kita mulai dengan menyiapkan direktori dan file yang diperlukan oleh kebanyakan aplikasi PRADO. Kita menggunakan piranti baris perintah PRADO untuk melaksanakan tujuan ini. -
- --Anggap blog adalah nama direktori untuk menampung seluruh sistem blog, dan URL untuk mengakses folder ini adalah http://hostname/blog/ (ganti hostname dengan nama host sebenarnya). -
- --Di bawah direktori blog, kita menjalankan piranti baris perintah PRADO dengan perintah berikut (ganti path/ke dengan path sebenarnya ke instalasi kerangka kerja PRADO): -
--Menjalankan perintah di atas akan membuat direktori dan file berikut: -
- - - --Sekarang kita mempunyai kerangka aplikasi PRADO yang dapat diakses melalui URL http://hostname/blog/index.php yang menampilkan halaman Web dengan tulisan "Welcome to PRADO". -
- --Sangat bermanfaat mempelajari lebih rinci mengenai direktori dan file yang baru saja kita buat. -
- - --Setiap aplikasi PRADO mempunyai naskah entri, sering dinamakan sebagai index.php. Dalam kebanyakan kasus, ia hanya naskah PHP yang secara langsung dapat diakses oleh pengguna Web. Ini mengurangi resiko terhadap ijin para pengguna Web untuk menjalankan naskah yang tidak diinginkan pada server. -
- --Kegunaan utama dari naskah entri adalah untuk mengawali aplikasi PRADO dan membiarkan ia menangani permintaan pengguna. Naskah entri biasanya berisi pernyataan PHP berikut, -
- --File XML opsional application.xml berisi konfigurasi aplikasi. Kegunaan utamanya adalah untuk mengkustomisasi dalam cara yang bisa mengkonfigurasi turunan aplikasi yang dibuat dalam naskah entri. Sevagai contoh, kita dapat menghidupkan fitur pencatatan untuk sistem blog kita dengan bantuan konfigurasi aplikasi. -
- --File application.xml yang sekarang kita miliki hampir kosong. Sebenarnya kita dapat menghapusnya dengan aman karena aplikasi pada saat ini hanya menggunakan seting standar PRADO. Seiring kita ke depan, kita akan merujuk kembali secara kontan dan menampilkan bagaimana untuk mengkonfigurasi aplikasi kita dalam application.xml. -
- - --Homepage (juga disebut halaman standar) Home.page adalah satu-satunya halaman yang dibuat oleh piranti baris perintah PRADO. Berisi konten dalam file ini yang muncul dalam browser saat mengunjungi URL http://hostname/blog/index.php. -
- --Konen dalam file Home.page menggunakan format template PRADO, yang kebanyakan mirip HTML dengan beberapa tag spesifik-PRADO. Sebagai contoh, dalam Home.page kita melihat konten murni HTML berikut: -
- --Direktori protected, juga dikenal sebagai path basis aplikasi, adalah direktori akar yang menampung halaman, template, konfigurasi, data, dll. Nama protected menunjukan bahwa direktori ini harus disembunyikan dari para pengguna Web, karena file di bawah direktori ini berisi data sensitif. -
- --Server Web berbeda mempunyai berbeda terhadap "melindungi" direktori. Untuk sever httpd Apache, cara termudah adalah untuk menempatkan file bernama .htaccess di bawah direktori dengan isi deny from all. -
- - --Direktori protected/runtime dan assets adalah dua direktori yang harus disetel bisa ditulisi oleh proses server Web. Direktori runtime menyimpan data sensitif (misalnya konfigurasi aplikasi yang diuraikan) yang dibuat saat menjalankan aplikasi PRADO, karena direktori assets menyimpan sumber daya yang dipublikasikan (misalnya file gambar, file javascript). -
- --Direktori pages adalah akar direktori halaman yang menampung seluruh halaman dalam sebuah aplikasi PRADO. Ini mirip analogi terhadap direktori htdocs pada server Web httpd Apache. -
- --Kita sudah melihat bagaimana cara mengakses homepage. Untuk mengakses halaman yang ditempatkan di bawah pages, menggunakan URL http://hostname/blog/index.php?page=path.ke.NamaHalaman. Berdasarkan URL ini, PRADO akan melihar halaman bernama NamaHalaman di bawah direktori pages/path/ke. URL yang kita pakai untuk mengakses homepage sebelumnya sama dengan http://hostname/blog/index.php?page=Home. -
- - --Dimungkinkan untuk mengkustomisasi nama dan lokasi terhadap file dan direktori yang dijelaskan di atas. -
- --Sebagai contoh, untuk meningkatkan keamanan, seseorang mungkin ingin memindahkan seluruh direktori protected ke tempat lain yang bukan folder Web. Untuk melakukannya, gunakan pernyataan PHP berikut untuk membuat turunan aplikasi dalam naskah entri: -
- --Untuk membuat lokasi akar direktori halaman dan mengubah nama homepage, seseorang dapat menetapkannya dalam konfigurasi aplikasi application.xml sebagai berikut: -
- --Setelah Anda mempelajari lebih jauh mengenai PRADO, Anda akan melihat bahwa PRADO adalah kerangka kerja fleksibel yang membolehkan Anda untuk mengkustomisasi hampir setiap aspeknya. Kami akan menjelaskan lebih lanjut teknik kustomisasi setelah kita melanjutkan tutorial kita. -
- --Dalam bagian ini, kita akan menggunakan fitur master/content PRADO untuk membagi tata letak umum diantara halaman. Tata letak merujuk ke area yang sama atay sebagian besar sama untuk setelan halaman. Sebagai contoh, dalam sistem blog kita, semua halaman akan berbagi header yang sama, footer dan bar-samping yang berisi link jalan pintas. Implementasi langsung adalah untuk mengulang tata letak umum dalam setiap halaman. Akan tetapi, pendekatan ini adalah cenderung salah dan sulit untuk dipelihara. Fitur master/content membolehkan kita untuk menggunakan tata letak umum sebagai sebuah kontrol yang memusatkan logika dan penyajian tata letak umum untuk setiap halaman. -
- --Sekarang kita membuat kontrol master MainLayout untuk mewakili tata letak umum berbagi dengan halaman blog kita. Kontrol MainLayout adalah kontrol template yang diperluas dari TTemplateControl. Ini mememerlukan file template MainLayout.tpl dan sebuah file kelas MainLayout.php yang ditempatkan di bawah direktori yang sama. Guna menjembatani pemeliharaan, kita membuat direktori baru protected/layouts untuk menampungnya. -
- - - --Untuk saat ini, MainLayout hanya berisi header dan footer sederhana, seperti ditampilkan berikut ini. Kedepan, kita akan menambahkan bar-samping. Para pembaca juga disarankan untuk meningkatkan tata letak dengan fitur yang lainnya. -
- --Contoh di atas memperlihatkan konten dalam file template MainLayout.tpl. Tiga tag baru ini dipakai: -
--File kelas MainLayout.php sangat sederhana: -
- --Untuk menggunakan kontrol master yang baru saja dibuat, kita akan memodifikasi Home.page dan Contact.page. Dalam keadaan tertentu, kita perlu untuk menghapus header dan footer darinya karena kontrol master akan bertanggung jawab untuk menampilkannya; dan kita perlu memberitahu dua halaman di mana mereka harus menggunakan MainLayout sebagai masternya. -
- --Kode berikut memperlihatkan konten dalam Contact.page setelah perubahan: -
- -Please fill out the following form to let me know your feedback on my blog. Thanks!
- -...kotak teks dan validator untuk nama pengguna... - -...kotak teks dan validator untuk emali pengguna... - -...kotak teks dan validator untuk konten umpan balik... - -<com:TButton Text="Submit" OnClick="submitButtonClicked" /> - -</com:TContent> --Konten yang dikurung di dalam tag <com:TContent> tag akan disisipkan ke dalam tempat yang disiapkan oleh <com:TContentPlaceHolder> pada template master. -
- --Selain <com:TContent>, kita juga melihat tag baru lain <%@ %> di atas, yang disebut tag kontrol template. Ia berisi pasangan nama-nilai yang dipakai untuk menginisialisasi properti terkait bagi pemilik template, yaitu, halaman Contact. -
- --Dengan menyetel properti MasterClass sebagai Application.layouts.MainLayout, kita menginstruksikan halaman Contact untuk menggunakan MainLayout sebagai masternya. Di sini, kita sedang menggunakan format namespace untuk merujuk ke kelas MainLayout. -
- --Ada beberapa cara tambahan untuk menetapkan kelas master untuk sebuah halaman. -
- --Kita dapat menetapkan master dalam kode seperti berikut untuk menghidupkan perubahan dinamis terhadap tata letak: -
- --Dalam contoh di atas, kita menetapkan MasterClass dalam metode onPreInit() yang diturunkan dari TPage. Metode dipanggil oleh PRADO langsung setelah turunan halaman dibuat. Selanjutnya kita dapat menentukan secara dinamis tata letak yang dipakai saat halaman diminta. Sebagai contoh, ketika halaman yang diminta oleh pengguna terdaftar kita memakai tata letak A, dan tata letak B dipakai jika pengguna tamu yang meminta halaman. -
- --Kita juga dapat menetapkan master dalam konfigurasi aplikasi atau konfigurasi halaman. Kode berikut memperlihatkan konfigurasi aplikasi yang dimutakhirkan untuk sistem blog kita: -
- --Dengan melakukan demikian, kita menghindari kesulitan pada penetapan master dalam setiap template halaman. Jika kita memutuskan untuk menggunakan master yang berbeda untuk halaman, kita hanya perlu mengubah konfigurasi aplikasi. Untuk alasan ini, dalam sistem blog kita, kita akan menggunakan pendekatan untuk menetapkan master. -
- -