Caution: You are browsing the legacy symfony 1.x part of this website.
Cover of the book Symfony 5: The Fast Track

Symfony 5: The Fast Track is the best book to learn modern Symfony development, from zero to production. +300 pages in full color showing how to combine Symfony with Docker, APIs, queues & async tasks, Webpack, Single-Page Applications, etc.

Buy printed version

Hari Pertama - Symfony advent calendar

emulai proyek

Diterjemahkan Oleh : Wildan Maulana

Tantangan

Symfony advent calendar adalah kumpulan 24 tutorial yang dipublikasikan setiap hari, mulai dari 1 Desember sampai 25 Desember. Iya, Setiap hari ! , termasuk akhir pekan, tutorial baru akan dipublikasikan. Setiap tutorial, diusahakan akan kurang dari satu jam, sambil melihat perkembangan aplikasi web 2.0, dari A sampai Z. Untuk tanggal 25, aplikasi akhirnya akan di onlinekan, dan source code nya akan dibuat open source. Aplikasi ini berguna, menarik, dan menyenangkan.

24 Kali kurang dari 1 jam hampir sama dengan 1 hari, dan itu adalah waktu yang kami pikir cukup, agar seorang developer dapat mempelajari symfony. Setiap hari, fitur baru akan ditambahkan ke aplikasi ini. Setiap hari Anda akan sadar bagaimana cepat dan efisien membangun aplikasi web base dengan symfony, dan pasti rasa ingin tahu Anda akan bertambah.

Kami anggap tantangan ini tidak terlalu sulit, dan karena Kami juga orang-orang yang malas, Kami tidak memiliki rencana untuk hari ke 21. Fitur yang paling banya diminta oleh komunitas akan ditambahkan ke aplikasi Kami, tanpa adanya persiapan, dan kami akan membuatnya bekerja. Ini akan menjadi hari symfony-guru-for-a-day

Proyek

Aplikasi yang akan dibuat sederhananya bisa dibilang aplikasi ?tunjukkan dan katakan?, seperti daftar apa saja yang ingin dilakukan, buku telepon, atau toko buku. Tapi kami ingin menggunakan symfony untuk proyek yang orisinal, sesuatu yang berguna, dengan fitur yang banyak. Tujuannya adalah untuk membuktikan kalau symfony itu dapat digunakan pasa situasi yang kompleks, untuk mengembangkan aplikasi yang profesional dengan sedikit style dan usaha.

Kita juga berharap banyak orang yang akan menggunakan aplikasi ini untuk menunjukkan kalau website symfony dapat
menangani load yang besar. Oleh karena itulah, mengapa aplikasi ini perlu memberikan layanan yang nyata, dan dapat menjawab keperluan yang ada ? atau membuat yang baru. Peluncuran web site ini akan diiringi dengan test yang yang beray; ini juga artinya kami harap Anda, untuk mengetes website sambil melihat sampai berapa banyak pengunjung yang dapat didukung oleh website ini.

Isi dari proyek untuk hari berikutnya akan dirahasiakan. Masih banyak yang harus dilakukan hari ini tnaoa menjelaskan fitur lengkap dari aplikasi web 2.0. Ini akan memberikan Anda waktu untuk beredebat dan tebakan-tebakan tambahan. Tapi, kita perlu sebuah nama. jadi, kita panggil saja : askeet.

Yang akan Kita Kerjakan Hari Ini

Fokus utama hari ini adalah menampilkan sebuah halaman aplikasi ini ke web browser, dan mensetting lingkungan development yang profesional. Ini termasuk instalasi symfony, pembuatan sebua aplikasi, konfigurasi web server, dan penyetingan source version control system.

Seharusnya ini mudah bagi orang yang telah mengikuti tutorial sebelumya, dan tidak terlalu sulit untuk yang lainnya Dan, setiap orang sudah tentu saja harus belajar yang baru.

Kami asumsikan Anda menggunakan sistem Unix-like dengan Apache, MySql dan PHP 5 yang sudah terinstall. Jika Anda menggunakan sistem Windows, jangan panik : ini juga dapat bekerja dengan baik, anda hanya perlu mengetik beberapa perintah pada cmd prompt.

Instalasi Symfony

Cara termudah untuk menginstall sumfony adalah dengan menggunakan paket PEAR. Tapi, agar dapat menggunakan channels dan mengakses channel symfony = Anda harus mengupgrade PEAR Anda ke versi 1.4.0 atau lebih tinggi (kecuali Anda menjalankan PHP 5.1.0, dimana sudah ada PEAR 1.4.5) :

$ pear upgrade PEAR

Catatan : Jika Anda mengalami masalah ketika menggunakan PEAR, silahkan melihat bab Instalasi pada buku symfony.

Sekarang, Anda dapat menambahkan channel 'symfony' :

$ pear channel-discover pear.symfony-project.com

Anda siap menginstall versi stabil terakhir dari symfony, bersama dengan paket yang berhubungan :

$ pear install symfony/symfony

Cek lah kalau symfony sudah terinstall dengan menggunakan command line untuk mengecek versinya :

$ symfony -V

Jika Anda curiga tentang apa saja yang dapat dilakukan oleh commnd line ini untuk Anda, ketik symfony -T, untuk melihat opsi-opsi yang tersedia. Anda juga mungkin ingin membaca bab instalasi pada buku symfony untuk membaca bagaimana cara menginstall symfony dari format tgz atau dari repository svn. Kontribusi dari komunitas juga menjelaskan instlasi non-PEAR, Anda dapat melihatnya pada symfony wiki.

Jika Anda Penasaran tentang apa saja yang dapat dilakukan oleh commnd line ini untuk Anda, ketik symfony -T, untuk melihat opsi-opsi yang tersedia. Anda juga mungkin ingin membaca [bab instalasi] (http://www.symfony-project.com/book/1_0/02-Exploring-Symfony-s-Code) pada buku symfony untuk membaca bagaimana cara menginstall symfony dari format tgz atau dari repository svn. Kontribusi dari komunitas juga menjelaskan instlasi non-PEAR, Anda dapat melihatnya pada wiki symfony.

Setup Proyek

Pada symfony, sebuah applications (aplikasi) yang saling berbagi data model di kelompokkan menjadi projects (proyek). Untuk proyek askeet, kita sudah bisa melihat kalau akan ada dua buah, frontend dan backend : yang membuat dua buah aplikasi. Proyek akan menjadi inti aplikasi, maka proyek ini harus kita buat terlebih dahulu. Untuk melakukan hal itu, apa yang Anda perlukan adalah membuat direktori dan perintah sebuah perintah pada command line , yaitu symfony init-project

$ mkdir /home/sfprojects/askeet
$ cd /home/sfprojects/askeet
$ symfony init-project askeet

Sekarang saatnya untuk membuat aplikasi frontend dengan perintah symfony init-app :

$ symfony init-app frontend

Wow, secepat itu.

Catatan : Pengguna Windows disarankan untuk menjalankan symfony dengan proyek barunya dalam path yang tidak mengandung spasi - ini termasuk direktori Documents and Settings.

Setup Web service

Konfigurasi Web server

Sekarang saatnya untuk mengubah konfigurasi Apache Anda untuk membuat aplikasi baru dapat diakses. Untuk yang proffesional, lebih baik men setup aplikasi baru dengan virtual host, dan itulah yang akan kita jelaskan disini, Bagaimanapun juga, jika Anda ingin menambahkannya sebagai alias, Anda bisa membacanya pada bab [Konfigurasi Web Server] (http://www.symfony-project.com/cookbook/1_0/web_server) di buku symfony.

Buka httpd.conf dari direktori Apache/conf/ Anda, dan tambahkan baris-baris ini di bagian akhir nya :

<VirtualHost *:80>
  ServerName askeet
  DocumentRoot "/home/sfprojects/askeet/web"
  DirectoryIndex index.php
  Alias /sf /usr/local/lib/php/data/symfony/web/sf

  <Directory "/home/sfprojects/askeet/web">
   AllowOverride All
  </Directory>
</VirtualHost>

Catatan : alias /sf menunjuk ke folder symfony pada direktori PEAR data Anda. Untuk melihatnya, ketik saja, pear config-show. Aplikasi Symfony perlu mengakses folder ini untuk mendapatkan beberapa gambar dan file javascript, agar dapat menjalankan tollbar web debug dan AJAX helpers.

Pada Windows Anda harus mengganti baris Alias dengan baris seperti ini :

  Alias /sf "C:\php\pear\data\symfony\web\sf"

Membuat nama domaine

Nama domain askeet harus dibuat secara lokal.

Jika Anda menjalankan sistem Linux, ini bisa dilakukan dengan mengedit file /etc/hosts. Jika Anda menjalankan Windows XP, file in terletak di direktori C:\WINDOWS\system32\drivers\etc\.

Tambahkan baris berikut :

127.0.0.1         askeet

Catatan : Anda harus memiliki hak administrasi untuk melakukan hal ini.

Jika Anda tidak ingin menambah host baru, Anda harus menambahkan statemen Listen untuk melayani website Anda pada port lain. Ini akan memperbolehkan Anda untuk menggunakan domain localhost.

Mengetes Konfigurasi baru

Restart Apache, dan cek kalau anda sekarang sudah bisa mengakses aplikasi baru Anda :

http://askeet/

Congratulations

Catatan: Symfony menggunakan module mod_rewrite untuk menghilangkan bagian /index.php/ pada URL. Jika anda tidak ingin menggunakannya atau web server Anda tidak menyediakan fasilitas yang sama, Anda bisa menghilangkan fitur ini dengan cara menghapus file .htaccess yang ada di direktori web/. Jika versi Apache Anda tidak dicompile dengan mod_rewrite, cek Apakah Anda memiliki mod_reweite DSO terinstall kemudian jika iya, tambahkan baris ini pada file httpd.conf Anda :

AddModule mod_rewrite.c
LoadModule rewrite_module modules/mod_rewrite.so

Anda akan belajar lebih jauh mengenai smart URL pada [bab routing] (http://www.symfony-project.com/book/1_0/09-Links-and-the-Routing-System).

Anda juga harus mencoba mengakses aplikasi dari lingkungan development. Keyik URL berikut :

http://askeet/frontend_dev.php/

Web debug toolbat seharusnya muncul pada bagian ujung atas kanan, termasuk icon kecil yang menunjukkan kalau konfigurasi Alias /sf Anda benar.

web debug toolbar

Sekali lagi,cara setup ini sedikit berbeda jika Anda menggunakan sercer IIS pada lingkungan Windows.
Cari tahu bagaimana mengkonfigurasinya pada [tutorial yang berhubungan] (http://www.symfony-project.com/cookbook/1_0/web_server_iis).

Subversion

Salah satu prinsip orang-orang pemalas adalah tidak perlu mengkhawatirkan merusak kode yang sudah ada. Karena kita ingin bekerja cepat, kita ingin kembali ke versi sebelumnya jika ada perubahan yang tidak efisien, kita ingin memperbolehkab lebih dari satu orang bekerja pada sebuah proyek, dan kit juga ingin memiliki akses ke seluruh versi harian dari aplikasi, kita akan menggunakan version control. Yang akan kita gunakan adalah Subversion. Kita Asumsikan Saja Anda telah menginstall server subversion atau memiliki akses ke server subversion.

Pertama, buatlah repositoru untuk proyek askeet :

$ svnadmin create $SVNREP_DIR/askeet
$ svn mkdir -m "layout creation" file:///$SVNREP_DIR/askeet/trunk file:///$SVNREP_DIR/askeet/tags file:///$SVNREP_DIR/askeet/branches

Selanjutnya, Anda harus melakukan import awal, dengan mengabaikan direktori temporary cache/ dan log/.

$ cd /home/sfprojects/askeet
$ rm -rf cache/*
$ rm -rf log/*
$ svn import -m "initial import" . file:///$SVNREP_DIR/askeet/trunk

Sekarang ganti nama direktori aplikasi asli proyek dan gunakan versi yang diambil dari SVN, setelah itu hapus direktori asli proyek :

$ cd /home/sfprojects
$ mv askeet askeet.origin
$ svn co file:///$SVNREP_DIR/askeet/trunk/ askeet/
$ ls askeet

$ rm -rf askeet.origin

Ada satu lagi hal yang harus di setup. Jika Anda mengirimkan direktori kerja Anda ke repository, Anda mungkin mencopy juga file-file yang tidak diinginkan, seperti file-file yang terletak di direktori cache dan log dari proyek Anda. Jadi Anda harus menentukan sebuah daftar yang berisi daftar file yang akan diabaikan oleh SVN :

$ cd /home/sfprojects/askeet
$ svn propedit svn:ignore cache

Text editor default yang dikonfigurasikan untuk SVN akan muncuk, Tambahkan subdirektori dari askeet yang akan di abaikan oleh SVN ketika proses pengiriman (commit) :

*

Save dan berhenti. Anda telah selesai.

Ulangi prosedur ini untuk direktori log :

$ svn propedit svn:ignore log

*

Sekarang, pastikan untuk mengeset permission write (hak untuk menulis) pada direktori cache dan log ke level yang sesuai agar web server Anda dapat menulis kedalamnya lagi. Pada command line, gunakanlah perintah ini :

$ chmod 777 cache
$ chmod 777 log

Catatan : Pengguna Windows dapat mengggunakan client TortoiseSVN unuk memanage repositor subversion mereka.

Jika Anda ingin mempelajari lebih jauh tentang version control, bacalah bab Pembuatan Proyek pada buku symfony.

Catatan : SVN askeet adalah public, Anda bisa mengaksesnya di :

    http://svn.askeet.com/

Silahkan, lihatlah sekarang.

Code hari ini telah dicommit, Anda bisa mengambilnya dengan tag release_day_1

  $ svn co http://svn.askeet.com/tags/release_day_1/ askeet/

Sampai ketemu Besok

Yah ..,ini sudah 1 jam !. Kita telah berbicara banyak dan tidak melakukan hal-hal yang baru untuk symfony. Tapi, lihat saja apa yang akan muncul untuk hari kedua kita :

  • Apa yang akan dilakukan oleh aplikasi
  • Membangun data model yang menggenerate object-relational mapping
  • men-scaffolding sebuah modul

Sementara itu, jika Anda ingin mengetahui berita terakhir tentang askeet Anda bisa mendaftarke mailing list askeet atau berkunjung ke forumnya.

Pastikan Anda kembali lagi besok !