Membangun aplikasi Web dari awal dengan Laravel
Indonesian (Bahasa Indonesia) translation by Keti Pritania (you can also view the original English article)
Dalam Nettuts + Mini Seri ini, kita akan membangun aplikasi web dari awal, sambil menyelam ke PHP framework baru besar yang cepat mengambil Uap, disebut Laravel-kerangka 5,3 PHP sederhana dan elegan.
Pertama, kita akan mempelajari lebih lanjut tentang Laravel, dan mengapa itu adalah suatu pilihan yang cocok untuk aplikasi web berbasis PHP berikutnya.
Pendahuluan: Apa itu Laravel



Laravel adalah kerangka kerja yang bersih dan berkelas untuk pengembangan web PHP. Membebaskan Anda dari kode spaghetti, hal ini membantu Anda membuat aplikasi indah, menggunakan sintaks sederhana, ekspresif. Pembangunan harus menjadi pengalaman kreatif yang Anda nikmati, bukan sesuatu yang menyakitkan. Nikmati udara segar!
Laravel adalah kerangka 5,3 PHP yang menggambarkan dirinya sebagai "kerangka kerja untuk Web tukang". Menurut pengarangnya, Taylor Otwell, Laravel berusaha untuk membawa kegembiraan kembali pemrograman dengan membuat Laravel sederhana, elegan, dan yang paling penting, terdokumentasi dengan baik.
Dari pengalaman saya dengan kerangka, saya pasti setuju bahwa Laravel hits ini tiga poin hiper:
- Sederhana - Laravel's fungsionalitas mudah untuk memahami dan melaksanakan. Jika Anda menikmati CodeIgniter betapa sederhana dan mudah ini, maka Anda akan menyukai Laravel
- Elegan - sebagian besar fungsi-fungsi Laravel's bekerja mulus dengan sangat sedikit konfigurasi, bergantung pada Konvensi standar industri untuk mengurangi kode mengasapi
- Terdokumentasi dengan baik - Laravel's dokumentasi lengkap dan selalu up-to-date. Pencipta kerangka membuat sebuah titik untuk memutahirkan dokumentasi sebelum meluncurkan versi baru, memastikan bahwa orang-orang yang belajar kerangka selalu memiliki dokumentasi terbaru.
Laravel membuat apa berbeda?
Sebagai dengan setiap PHP framework, Laravel menawarkan banyak fungsi yang membedakan dari sisa paket. Berikut adalah beberapa, yang saya rasa yang paling penting (berdasarkan https://laravel.com/docs).
Bundel
Bundel akan Laravel sebagai PEAR adalah PHP.
Bundel akan Laravel sebagai PEAR adalah PHP; mereka adalah add-on paket yang dapat Anda download dan pasang ke instalasi Laravel. Saat ini, ada beberapa kumpulan dalam repositori Bundle Laravel, dengan lebih banyak ditambahkan sepanjang waktu. Laravel dilengkapi dengan alat bantu baris perintah yang disebut Artisan, yang membuatnya sangat mudah untuk menginstal bundel.

Salah satu kumpulan Laravel favorit saya, disebut Bob Builder menambah alat berguna perancah Laravel, dan memungkinkan Anda menghasilkan berbagai jenis file dan kelas-kelas yang cocok untuk Laravel, seperti controller, model, migrasi dan tes. Fungsi ini sangat mirip dengan apa yang mungkin Anda harapkan dari Rails generator. Untuk menginstal Bob, hanya menggunakan utilitas baris perintah Artisan, seperti:
php artisan bundle:install bob
Fasih ORM
Fasih ORM adalah implementasi PHP ActiveRecord paling canggih yang tersedia.
Fasih ORM adalah, sejauh ini, salah satu implementasi ORM terbaik yang saya telah digunakan. Mirip dengan bagaimana fungsi Doctrine ORM, membuat pekerjaan pada catatan database sederhana dan mudah. Ini abstrak sebagian fungsi yang Anda akan memiliki pada model (yaitu operasi CRUD) dan menyediakan cara yang fleksibel untuk menambahkan lebih banyak. Selain itu, ORM fasih memberi Anda kemampuan untuk mendefinisikan hubungan model untuk mengambil catatan, berdasarkan hubungan mereka dengan masukan lainnya. Misalnya, Anda dapat mengambil semua catatan file terkait yang terkait dengan pengguna dengan melakukan:
foreach( $user->Files as $file ) { echo $file->name; }
Migrasi
Migrasi database adalah utilitas yang besar dalam setiap proyek gudang - terutama untuk proyek-proyek yang mana beberapa pengembang terlibat - dengan membuatnya mudah untuk tetap up-to-date dengan anggota tim lainnya perubahan skema database Anda. Dalam Laravel, migrasi yang dibangun ke dalam kerangka kerja; mereka dapat dijalankan melalui utilitas baris perintah Artisan. Laravel sendiri skema Builder fungsi cukup sederhana bahwa orang harus mampu dengan cepat menulis perubahan skema database.
Berikut adalah contoh, diambil dari Laravel dokumentasi:
Schema::table('users', function($table) { $table->create(); $table->increments('id'); $table->string('username'); $table->string('email'); $table->string('phone')->nullable(); $table->text('about'); $table->timestamps(); });
Unit pengujian
Orang percaya Test pembangunan (baca untuk info lebih lanjut: The Newbie's panduan untuk Test pembangunan), aku suka kalau kerangka memiliki semacam pengujian unit utilitas dipanggang dalam. Laravel sendiri indah terintegrasi dengan PHPUnit, mengandalkan statusnya sebagai salah satu industri terbaik PHP unit pengujian kerangka. Untuk membangun sebuah tes, hanya memperluas kelas PHPUnit_Framework_TestCase, seperti:
class MyUnitTest extends PHPUnit_Framework_TestCase { public function somethingShouldBeTrue() { $this->assertTrue(true); } }
Untuk menjalankan aplikasi Laravel tes, mari kita, sekali lagi, menggunakan utilitas baris perintah Artisan:
php artisan test
Perintah yang akan dijalankan semua tes, yang ditemukan dalam direktori aplikasi tes aplikasi Laravel Anda.
Redis
Redis adalah database kunci-nilai, mirip dengan CouchDB dan MongoDB. Hal ini digunakan oleh banyak aplikasi web untuk menyimpan non-data relasional, dibandingkan dengan konvensional database (seperti MySQL), yang menyimpan catatan yang biasanya berhubungan dengan satu sama lain. Redis dukungan Laravel dijalankan begitu elegan ke titik bahwa aku bahkan tidak bisa untuk menggambarkan bagaimana mudahnya untuk bangun dan berjalan.
Setelah Anda memiliki server Redis Anda menyiapkan, cukup buka database.php file dan Tambahkan konfigurasi Redis Anda, seperti:
'redis' => array( 'default' => array('host' => '127.0.0.1', 'port' => 6379), 'staging' => array('host' => 'redis-db-staging.host', 'port' => 6379), 'production' => array('host' => 'redis-db-production.host', 'port' => 6379), )
Kanan dari kelelawar, kita dapat melihat bahwa Laravel mendukung beberapa konfigurasi Redis, berdasarkan lingkungan aplikasi Anda. Setelah Anda memiliki konfigurasi Redis Anda di, Anda dapat mulai membuat panggilan ke Redis, seperti:
$redis = Redis::db(); //this gets a Redis object connected to the 'default' configuration $redis = Redis::db('staging'); //this gets a Redis object connected to the 'staging' configuration $redis = Redis::db('production'); //this gets a Redis object connected to the 'production' configuration $redis->set('site', 'Nettuts+'); $site = $redis->get('site'); $sites = $redis->lrange('sites', 0, -1);
Laravel menyediakan klien tipis bagi kami, sehingga semua Redis perintah dapat disebut pada kelas Redis - Laravel mengurus mengubahnya menjadi query Redis tepat.
Membangun sebuah aplikasi Web dari awal dengan Laravel
Sekarang bahwa kita tahu lebih banyak tentang Laravel, saatnya untuk mulai membangun aplikasi web kami dengan itu! Sepanjang seri ini mini, kami akan membuat salinan Instagram kita sendiri, yang disebut Instapics. Ini sedikit app memungkinkan Anda mengirim, suka, dan komentar pada foto, serta mengikuti pengguna lain. Dengan itu dalam pikiran, mari kita menyelam di!
Langkah 1: Download Laravel dan file proyek lainnya
Sebelum kita mulai, mari kita pertama memastikan bahwa kita memiliki sistem yang dapat mendukung Laravel. Menurut dokumentasi, Laravel memerlukan berikut:
- PHP 5.3.x - Laravel memanfaatkan banyak fitur-fitur khusus 5,3 PHP, seperti penutupan, akhir-statis mengikat dan namespaces.
- Perpustakaan FileInfo - ini diaktifkan secara default di 5,3 PHP, tetapi pada sistem Windows, Anda mungkin perlu untuk menambahkan ekstensi file konfigurasi PHP.ini Anda.
- Perpustakaan mcrypt - ini digunakan oleh Laravel untuk enkripsi dan hash generation, dan biasanya datang pra-instal dengan PHP.
Setelah kami selesai pengaturan lingkungan, mari kita download Laravel dan semua Perpustakaan kita akan menggunakan untuk Instapics. Download file-file berikut dan menempatkannya dalam folder diakses web:
- Laravel - http://laravel.com (saat ini v3.2.1)
- Kericau Bootstrap - http://twitter.github.com/bootstrap/ (Saat ini v2.0.4)
- jQuery - http://jquery.com (saat ini v1.7.2)
Di dalam folder akar Laravel's, Anda akan menemukan folder publik - ini adalah dimana semua file yang dapat diakses publik harus disimpan. Laravel v3.2.1 memiliki beberapa premade folder dalam folder publik untuk aset kita, css, img, dan folder js. Tempat Twitter Bootstrap dan jQuery file dalam folder yang sesuai mereka. Pada titik ini, struktur folder Anda harus sama dengan berikut:

Twitter Bootstrap akan memiliki beberapa file di dalam folder css, img, dan js, dan jQuery akan di dalam js folder.
Langkah 2: Setup Laravel's kunci enkripsi, URL cantik dan Virtual Host
Sebelum kita menulis kode apapun, kita perlu untuk mengatur kunci encyption untuk Laravel digunakan untuk aplikasi kita. Laravel menggunakan ini untuk mengenkripsi data yang kita mungkin perlu enkripsi, seperti cookies. Buka application/config/application.php file dan menemukan pengaturan kunci. Di dalam, nilai default akan YourSecretKeyGoesHere!. Mengatur hal ini untuk kosong; seharusnya terlihat seperti:
/* |-------------------------------------------------------------------------- | Application Key |-------------------------------------------------------------------------- | | This key is used by the encryption and cookie classes to generate secure | encrypted strings and hashes. It is extremely important that this key | remain secret and should not be shared with anyone. Make it about 32 | characters of random gibberish. | */ 'key' => '',
Selanjutnya, membuka Terminal Command Prompt, browse ke direktori root Laravel's, dan menggunakan Artisan untuk menghasilkan sebuah kunci:
PHP tukang kunci: menghasilkan
Ini seharusnya secara otomatis menghasilkan sebuah kunci enkripsi 32 karakter acak untuk Laravel. Jika Anda melakukan ini dengan benar, sekarang seharusnya terlihat seperti berikut:
/* |-------------------------------------------------------------------------- | Application Key |-------------------------------------------------------------------------- | | This key is used by the encryption and cookie classes to generate secure | encrypted strings and hashes. It is extremely important that this key | remain secret and should not be shared with anyone. Make it about 32 | characters of random gibberish. | */ 'key' => 'e9Vo0SQDe5HjsvXWcTogqKluVfEqnfEu',
Jika Anda ingin untuk meregenerasi kunci Anda, hanya ulangi langkah-langkah!
Selanjutnya, kita perlu untuk mengubah konfigurasi sehingga dapat menerima cukup-URL dan bekerja bahkan tanpa menunjuk permintaan kami untuk index.php. Dalam application/config/application.php file, Cari berikut:
/* |-------------------------------------------------------------------------- | Application Index |-------------------------------------------------------------------------- | | If you are including the "index.php" in your URLs, you can ignore this. | However, if you are using mod_rewrite to get cleaner URLs, just set | this option to an empty string and we'll take care of the rest. | */ 'index' => 'index.php',
Jika kita ingin mengaktifkan cukup-URL, pastikan pengaturan indeks kosong, seperti:
/* |-------------------------------------------------------------------------- | Application Index |-------------------------------------------------------------------------- | | If you are including the "index.php" in your URLs, you can ignore this. | However, if you are using mod_rewrite to get cleaner URLs, just set | this option to an empty string and we'll take care of the rest. | */ 'index' => '',
Jika Anda menggunakan ini, Anda perlu memastikan bahwa Anda memiliki mod_rewrite diaktifkan pada server web Anda (jika Anda pada Apache).
Akhirnya, kita akan perlu untuk men-setup sebuah host virtual untuk Laravel. Ini tidak benar-benar diperlukan dalam lingkungan pengembangan, tetapi, untuk produksi, penting bahwa kami tidak mengizinkan akses ke perpustakaan dan aplikasi Laravel file. Seperti disebutkan di atas, dalam file Laravel Anda akan melihat folder, disebut publik, yang mana semua file yang dapat diakses publik harus pergi. Selain itu, kita perlu memastikan bahwa domain kita, http://instapics.com hanya menunjuk ke folder publik dan tempat lain.
Konfigurasi virtual host tergantung pada server web yang Anda gunakan. Berikut adalah contoh untuk Apache Web Server:
<VirtualHost *:80> ServerName instapics.com DocumentRoot "D:/Development/htdocs/instapics/public" <Directory "D:/Development/htdocs/instapics/public"> </Directory> </VirtualHost>
Kita juga harus menambahkan domain, instapics.com, untuk file host kita (karena domain ini tidak benar-benar ada). Di Windows, edit file C:\Windows\System32\drivers\etc\hosts; di Linux/OSX, Anda biasanya mengedit/etc/hosts. Tambahkan baris ini ke file:
127.0.0.1 instapics.com
Ini akan menginformasikan kami mesin yang domain instapics.com akan menyelesaikan untuk 127.0.0.1 mana yang komputer lokal.
Langkah 3: Mengatur Routing
Dalam Laravel, Semua permintaan ke aplikasi yang dipetakan ke fungsi tertentu atau controller oleh rute. Mereka bertanggung jawab memerintahkan aplikasi mana URL pergi. Sebagai contoh, jika kita ingin http://instapics.com/home untuk membuat file tampilan rumah, kami dapat membuat rute berikut dalam routes.php, ditemukan di dalam folder aplikasi:
Route::any('home', function() { return View::make('home.index'); })
Selain itu, jika kita malah perlu rute http://instapics.com/home ke Controller, mengatakan, home.php controller, kita mungkin melakukan sesuatu seperti ini:
Route::controller('home');
Ini akan rute ke home.php contoller file. Metode aksi apapun tidak akan dibuat tersedia juga.
Penting untuk dicatat di sini adalah bahwa secara default, Laravel tidak rute ke kontroler seperti Framework PHP lain lakukan. Ini adalah oleh desain. Dengan demikian, kita dapat benar-benar menciptakan halaman sederhana tanpa perlu untuk membuat controller untuk itu. Sebagai contoh, jika kita ingin membuat hubungi kami halaman statis yang hanya mencantumkan informasi kontak, kita hanya dapat melakukan sesuatu seperti ini:
Route::any('contact-us', function() { return View::make('home.contact-us'); })
Rute ini akan http://instapics.com/contact-us dan membuat application/views/home/contact-us.php file. Karena kita tidak punya apapun pengolahan dinamis pada Halaman ini, kami hanya secara otomatis dapat membuat file tampilan, menyelamatkan kita waktu untuk membuat dan mengkonfigurasi controller untuk melakukannya.
Ada begitu banyak lagi yang bisa kita lakukan dengan rute di Laravel yang itu dapat berdiri sendiri sebagai tutorial sendiri. Hal-hal seperti:
- Verba HTTP - Laravel memberikan kita kemampuan untuk menciptakan rute, berdasarkan HTTP kata kerja yang digunakan dalam permintaan. Sebagai contoh, kita dapat memiliki sebuah GET permintaan untuk/Home rute pergi di suatu tempat berbeda dari mana permintaan POST akan pergi.
- Wildcard - ini memungkinkan kita rute URL dengan nilai wildcard melekat padanya (misalnya /user/(:num) mana (: num) adalah ID pengguna)
- Penyaring - ini Mari kita menjalankan beberapa fungsi sebelum atau setelah rute yang dijalankan, tergantung pada rute yang dipanggil. Sebagai contoh, kita dapat membuat filter auth yang akan dipanggil sebelum semua rute, kecuali rumah dan tentang rute. Dalam CodeIgniter, ini mirip dengan kait, tetapi jauh lebih mudah untuk melaksanakan, karena fakta bahwa filter berdasarkan jalur - sehingga kita dapat menerapkan mereka untuk semua permintaan atau hanya beberapa.
Untuk tujuan dari aplikasi web ini, meskipun, kita hanya perlu beberapa rute. Pertama, rute yang memetakan semua permintaan ke controller secara default. Buka file routes.php, dan komentar route default ke controller rumah:
/* Route::get('/', function() { return View::make('home.index'); }); */
Berikut ini sedikit kode, tambahkan baris berikut:
Route::controller(Controller::detect());
Baris ini akan memetakan semua permintaan kami untuk semua kontroler. Jika controller atau tindakan tidak ada, sistem akan kembali tanggapan 404.
Sekarang, kami membuat rute untuk http://instapics.com/about. Secara teknis, kita hanya bisa membuat tentang controller, tapi itu akan sia-sia, karena kami hanya bisa dimasukkan yang dalam controller rumah. Tambahkan baris berikut setelah rute kami hanya dibuat:
Route::controller(Controller::detect()); Route::get('about', 'home@about');
Rute ini akan mengarahkan semua permintaan untuk http://instapics.com/about rumah controller, dan tentang tindakan.
Langkah 3. Membuat Laravel Controller pertama

Controller siapapun?
Pengendali Laravel yang ditemukan di dalam folder aplikasi pengendali. Secara default, controller rumah akan menerima permintaan dikirim ke akar dari aplikasi Laravel. Sebagai contoh, akan http://instapics.com/ akan pergi ke Home->action_index() metode.
Untuk membuat controller, hanya membuat file di dalam folder aplikasi pengendali. Dengan Konvensi, kita akan ingin nama berkas sesuatu deskriptif yang juga akan menjadi nama kelas controller. Untuk sekarang, mari kita membuat controller baru untuk mekanisme login kami, yang disebut "Login":
class Login_Controller extends Base_Controller { public function action_index() { //do our login mechanisms here echo 'test'; //echo test so we can test this controller out } }
Selanjutnya, buka peramban dan kunjungi http://instapics.com/login. Dari sini, Anda akan melihat pesan debug "tes" yang kami ditempatkan. Karena, dalam routes.php file, kita menetapkan itu agar rute untuk semua controller, ini harus bekerja tanpa konfigurasi tambahan apapun. Setelah Anda telah dikonfirmasi bahwa itu bekerja, hanya menghapus pesan debug. Kita akan kembali ke controller ini di artikel yang akan datang.
Untuk sekarang, Selamat Anda; Anda baru saja membuat controller Laravel Anda pertama!
Lebih menyenangkan Controller
Filter
Ada lebih banyak yang bisa kita lakukan dengan controller, daripada mereka hanya menjadi gateway ke file tampilan. Sebagai contoh, ingat filter fitur yang saya sebutkan sebelumnya di bagian rute? Selain yang melekat pada rute tertentu, kita juga dapat melampirkan mereka ke controller khusus! Hanya menciptakan metode __constructor untuk controller, dan setup filter tidak. Sebagai contoh, jika kita perlu memastikan bahwa pengguna diotentikasi untuk semua metode dalam controller, kita dapat membuat penggunaan filter auth contoh kami:
public function __construct() { $this->filter('before', 'auth'); }
Ini akan memanggil auth filter pada semua aksi dalam controller ini. Jika kita ingin menargetkan beberapa tindakan tertentu, kita dapat merujuk kepada satu-satunya metode, seperti:
public function __construct() { $this->filter('before', 'filter_name')->only(array('action', 'actionagain')); }
Kita dapat menggunakan kecuali metode untuk menerapkan filter pada semua tindakan, kecuali beberapa:
public function __construct() { $this->filter('before', 'filter_name')->except(array('action', 'actionagain')); }
Perhatikan bagaimana ekspresif kode ini?
Kita bahkan dapat menargetkan kata kerja HTTP tertentu:
public function __construct() { $this->filter('before', 'filter_name')->except(array('action', 'actionagain'))->on('post'); }
Base_Controller
Paling, jika tidak semua, controller memperpanjang Base_Controller. Ini memberikan cara untuk menentukan metode yang akan sama untuk semua controller kami. Misalnya, jika kita perlu menciptakan metode penebangan untuk log permintaan controller:
class Base_Controller extends Controller { /** * Catch-all method for requests that can't be matched. * * @param string $method * @param array $parameters * @return Response */ public function __call($method, $parameters) { return Response::error('404'); } public function logRequest() { $route = Request::route(); Log::log('request', "Controller: {$route->controller} / Action: {$route->controller_action} called at ". date('Y-m-d H:i:s')); } }
Setiap saat kita inginkan untuk log permintaan, kita hanya dapat memanggil $this-> logRequest(); di setiap controller.
RESTful Controllers
Laravel's tenang controller membuatnya mudah untuk menambahkan tenang tanggapan ke controller Laravel apapun. Ini membuatnya mudah untuk membuat, misalnya, API yang tenang. Untuk melakukannya, hanya Tambahkan bendera $restful ke controller Anda:
class Api_Controller extends Base_Controller { public $restful = true; public function post_authenticate() { //all POST requests to /api/authenticate will go here //any other requests that are NOT POST will NOT go here. } public function get_user() { $user_id = Input::get('id'); //get the USER based on $user_id and return it for whoever requested it } public function post_user() { $email = Input::get('email'); $password = Input::get('password'); //Create a new User $user = User::create($email, $password); } }
Kita akan menyelam ke dalam semua fitur keren ini di masa depan tutorial, tetapi, untuk sekarang, mari kita memperbarui controller rumah. Kita harus menambahkan action_about metode, karena kami menciptakan http://instapics.com/about rute langsung ke metode ini. Buka application/controllers/home.php, dan memperbaruinya, seperti:
Kami menambahkan action_ ke semua metode aksi dalam controller kami (misalnya action_about). Sinyal ini untuk Laravel bahwa tindakan ini dapat dilihat di situs web. Metode lainnya, yang tidak memiliki awalan action_, tidak akan dapat diakses oleh publik.
class Home_Controller extends Base_Controller { public function action_index() { return View::make('home.index'); } public function action_about() { return View::make('home.about'); } }
Langkah 4. Membuat tampilan Laravel pertama dengan mesin template Blade
Laravel mendukung dua cara untuk menghasilkan pandangan untuk aplikasi:
- Dilihat berbasis PHP - ini adalah pandangan yang menggunakan PHP sebagai bahasa template.
- Dilihat berbasis pisau - ini adalah pandangan yang menggunakan Laravel's mesin template built-in, disebut Blade.
Mesin template Blade adalah kerangka template yang, mirip dengan bagaimana Smarty template Engine bekerja, menggunakan tag disesuaikan dan fungsi untuk memungkinkan pemisahan yang lebih baik presentasi logika dan aplikasi kode.
Demi kesederhanaan, kami akan memanfaatkan mesin template Blade, bertentangan dengan pandangan berbasis PHP.
Lihat semua file yang akan membuat menggunakan pisau mesin template kebutuhan untuk memiliki. blade.php ekstensi. Ini memberitahu Laravel menggunakan mesin pada file tampilan.
Pertama, mari kita membuat sebuah layout tujuan umum yang kita akan gunakan untuk semua pandangan kami. Buat folder aplikasi/views/layouts, dan di dalam, membuat file, bernama main.blade.php:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Instapics</title> {{ Asset::styles() }} {{ Asset::scripts() }} </head> <body> <div class="navbar navbar-fixed-top"> <div class="navbar-inner"> <div class="container"> <a class="brand" href="home">Instapics</a> <div class="nav-collapse"> <ul class="nav"> @section('navigation') <li class="active"><a href="home">Home</a></li> @yield_section </ul> </div><!--/.nav-collapse --> </div> </div> </div> <div class="container"> @yield('content') <hr> <footer> <p>© Instapics 2012</p> </footer> </div> <!-- /container --> </body> </html>
Sekarang bahwa kita memiliki letak utama kami, mari kita memperbarui file indeks. Buka application/views/home/index.blade.php dan update:
@layout('layouts/main') @section('navigation') @parent <li><a href="/about">About</a></li> @endsection @section('content') <div class="hero-unit"> <div class="row"> <div class="span6"> <h1>Welcome to Instapics!</h1> <p>Instapics is a fun way to share photos with family and friends.</p> <p>Wow them with your photo-filtering abilities!</p> <p>Let them see what a great photographer you are!</p> <p><a href="about" class="btn btn-primary btn-large">Learn more »</a></p> </div> <div class="span4"> <img src="http://nettuts.s3.amazonaws.com/2064_laravel/img/phones.png" alt="Instapics!" /> </div> </div> </div> <!-- Example row of columns --> <div class="row"> <div class="span3"> </div> <div class="span4"> <a href="#"><img src="http://nettuts.s3.amazonaws.com/2064_laravel/img/badge_ios.png" alt="Get it on iOS" /></a> </div> <div class="span4"> <a href="#"><img src="http://nettuts.s3.amazonaws.com/2064_laravel/img/badge_android.png" alt="Get it on Android" /></a> </div> </div> @endsection
Mari kita tinjau kami lihat file. Dalam tata letak utama template, kami membuat penggunaan tiga fungsi:
- Pengelola aset (Assets::styles(), aset:: scripts())
- @section pisau fungsi (dengan @yield_section)
- Dan @yield fungsi Blade
Mengelola aset
Laravel menyediakan cara yang kuat untuk memuat CSS dan JS file, melalui fungsi manajemen aset. Sintaks untuk menambahkan sebuah aset adalah Assets::add ('[aset nama]', ' [url relatif dari folder publik '], '[nama ketergantungan, array dependensi jika beberapa]'). Manajer aset juga menyediakan dukungan untuk aset dependensi, yang digunakan untuk memberitahu Laravel untuk memuat ketergantungan pertama, sebelum loading aset.
Kita akan perlu untuk mendaftar aset kami sehingga file tampilan akan dapat menggunakannya. Buka application/controllers/base.php, dan tambahkan kode berikut:
public function __construct() { //Assets Asset::add('jquery', 'js/jquery-1.7.2.min.js'); Asset::add('bootstrap-js', 'js/bootstrap.min.js'); Asset::add('bootstrap-css', 'css/bootstrap.min.css'); Asset::add('bootstrap-css-responsive', 'css/bootstrap-responsive.min.css', 'bootstrap-css'); Asset::add('style', 'css/style.css'); parent::__construct(); }
Dengan melakukan ini, kita membuat lebih mudah untuk menambahkan, menghapus atau memutakhirkan semua aset yang kita butuhkan. Kami menempatkan itu di dalam controller dasar __construct() metode untuk menambahkan aset ke semua controller kami. Untuk mengambil keuntungan dari hal ini dalam pandangan, kita cukup memanggil aset:: styles() untuk CSS file, dan aset:: scripts() untuk JS file dalam view file. Laravel secara otomatis menentukan apakah jenis aset, berdasarkan ekstensi file, dan beban itu dengan kelompok sesuai aset.
@section (dan @yield_section)
Bagian Mari kita menyuntikkan konten ke tata letak utama dari jarak. Untuk menentukan bagian mana layout utama kita adalah bagian, kita mengelilingi dengan tag Blade @section dan @yield_section.
Dalam file tampilan utama kami, kami telah menandai item navigasi sebagai @section (disebut navigasi). Melihat sekarang file tampilan indeks, kita menambahkan link navigasi <>About> ke bar navigasi dengan kode berikut:
@section('navigation') @parent <li><a href="about">About</a></li> @endsection
Dengan memanggil fungsi @parent, kita menginstruksikan file tampilan untuk mewarisi isi bagian asli dari tata letak yang utama. Jika kita ingin menghapus fungsi @parent, seperti:
@section('navigation') <li><a href="/about">About</a></li> @endsection
Sekarang, Bagian navigasi file tampilan indeks akan menggantikan tata letak utama navigasi sepenuhnya. Hal ini membuat proses perubahan tata letak utama HTML bahkan lebih fleksibel.
@yield
Fungsi @yield mirip dengan fungsi @section/@yield_section, tetapi, sebaliknya, mari kita lihat bersarang mengisi konten sepenuhnya. Dalam file indeks kami, kami memiliki fungsi @section('content') yang menggantikan @yield('content').
Sekarang, mari kita coba lewat di beberapa variabel untuk pandangan kami. Pertama, membuat file tampilan baru di folder aplikasi/views/home untuk halaman tentang. Mari kita menyebutnya about.blade.php:
@layout('layouts/main') @section('navigation') @parent <li><a href="about">About</a></li> @endsection @section('content') <div class="row"> <div class="span3"> <div class="well sidebar-nav"> <ul class="nav nav-list"> <li class="nav-header">Navigation</li> @foreach ($sidenav as $sn) <li @if ($sn['active']) class="active" @endif> <a href="{{ $sn['url'] }}">{{ $sn['name'] }}</a> </li> @endforeach </ul> </div> </div> <div class="span9"> <h1>About Instapics</h1> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent ullamcorper lectus et sapien volutpat iaculis. Phasellus arcu justo, commodo ac ornare at, pellentesque vitae nulla. Sed id justo mauris, et semper est. Mauris id dui vitae felis hendrerit sollicitudin ut vel nisi. Phasellus a dolor quis tellus sagittis commodo. Suspendisse potenti. Donec sagittis rhoncus sem in venenatis. Nam sit amet leo metus. Mauris eget nisi eu felis interdum venenatis nec sed ipsum. Integer lobortis, risus non pellentesque pharetra, massa augue vulputate sem, quis sagittis arcu tortor sit amet nisi. Ut quis nibh sem. Morbi malesuada, lorem ac tincidunt venenatis, quam erat rhoncus sapien, et tempus quam mauris sit amet metus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nam varius dictum lectus non placerat.</p> <p>Cras tincidunt, libero eu dignissim egestas, erat purus mattis urna, vitae pellentesque nisi turpis at velit. Vivamus vitae euismod nisi. Duis luctus ante nec neque fermentum vulputate. Phasellus in dolor quis mauris rhoncus consectetur ut quis lacus. Nulla facilisi. Nullam magna velit, accumsan vehicula consectetur a, vestibulum eget neque. Sed feugiat dui quis ligula convallis sed placerat dui dignissim. Aliquam interdum tempus leo, a hendrerit orci ultrices ut. Aliquam sem dolor, auctor eu mattis id, varius a massa. Fusce facilisis, massa id ultricies lacinia, urna nunc sollicitudin massa, sit amet posuere metus justo vitae metus. Vivamus in dolor quam, ut elementum libero. Proin vehicula diam eu diam consectetur ut imperdiet ipsum pulvinar. Cras eu est quis urna semper adipiscing ut et leo. Curabitur tristique consectetur aliquet. Phasellus quam neque, dapibus non eleifend quis, feugiat vel elit.</p> </div> </div> @endsection
Kembali di rumah controller, update action_about() metode:
public function action_about() { return View::make('home.about', array( 'sidenav' => array( array( 'url' => 'home', 'name' => 'Home', 'active' => false ), array( 'url' => 'about', 'name' => 'About', 'active' => true ) ) )); }
Meninjau kode kita, kita melihat bahwa, di rumah controller, kami melewati dalam array parameter. Sekarang, ini adalah nilai hardcoded, tetapi mereka dapat datang dari mana saja - misalnya, dari model atau database. Ini disampaikan ke file tampilan, dimana kami membuat penggunaan pisau beberapa Tag untuk membuat parameter.
@foreach ($sidenav as $sn) ... @endforeach
Hal ini memungkinkan kita loop melalui array dalam parameter kami.
<li @if ($sn['active']) class="active" @endif>
Ini adalah pernyataan-if. Jika kita ingin menggunakan lain, itu akan terlihat seperti ini:
@if ($sn['active']) class="active" @else class="notactive" @endif
<a href="{{ $sn['url'] }}">{{ $sn['name'] }}</a>
Ini adalah pisau paling dasar tag - itu hanya menggema kita menetapkan variabel.
Perhatikan bahwa, dalam sebagian besar dari Tag Blade, kami menggunakan baik ' ol PHP. Hal ini membuat lebih mudah untuk menulis Tag Blade, karena kami akan dapat menggunakan fungsi PHP asli, seperti isset() atau count(). Ada juga Tag Blade lain yang saya tidak dapat menggunakan di sini; Anda dapat belajar lebih banyak tentang mereka dalam dokumentasi Blade. Percayalah, it's pretty mudah!
Kesimpulan
Setelah membaca tutorial ini, yang telah kita pelajari:
- Apakah Laravel
- Apa yang membuat Laravel berbeda dari Framework PHP lain
- Dimana untuk mendownload Laravel
- Cara men-setup Laravel
- Bagaimana Laravel's Routing sistem bekerja
- Sistem penjaluran beberapa fitur lainnya di Laravel
- Cara membuat Laravel Controller pertama
- Beberapa fitur tambahan dengan Laravel's controller
- Cara membuat tampilan Laravel pertama
- Bagaimana menggunakan Laravel's pisau mesin template
Laravel adalah benar-benar menakjubkan kerangka kerja. Ini cepat, sederhana, elegan dan sangat mudah digunakan. Itu benar-benar manfaatnya yang dianggap sebagai kerangka kerja untuk digunakan untuk proyek berikutnya.
Selanjutnya di kami membangun aplikasi Web dari awal dengan Laravel seri, kita akan belajar tentang salah satu fitur terbaik Laravel's: ORM fasih dan fasih Query Builder.
Apa pendapatmu tentang Laravel? Apakah Anda mempertimbangkan untuk menggunakannya untuk proyek berikutnya? Beritahu saya di komentar! Dan, jika Anda anggota Tuts + Premium, menantikan untuk kursus Laravel Essentials mendatang kami!