Selasa, 16 Juni 2015

Belajar Laravel

Jamal Armel

Pengembangan aplikasi web dengan 
Laravel PHP Framework version 4












Abstract




Author(s) Title

Number of Pages
Date

Jamal Armel
Web application development with Laravel PHP Framework ver- sion 4
53 pages
11 April  2014

Degree

Bachelor of Engineering

Degree Programme

Media Engineering

Specialisation option

.NET application development and Hybrid Media

Instructor(s)


Aarne Klemetti, Senior Lecturer


Tujuan dari tesis ini adalah untuk mempelajari kerangka PHP baru dan menggunakannya secara efisien untuk membangun sebuah aplikasi web eCommerce untuk sebuah perusahaan start-up lepas kecil yang akan membiarkan pelanggan potensial memeriksa produk berdasarkan kategori dan lulus perintah aman. Untuk memenuhi set persyaratan, suatu sistem yang terdiri dari aplikasi web dengan backend dirancang dan diimplementasikan menggunakan dibangun di fitur Laravel seperti Komposer, fasih, Blade dan Artisan dan setumpuk WAMP.


Aplikasi web dibangun dengan menggunakan Laravel kerangka versi 4, PHP kerangka modern yang bertujuan untuk membuat pengembangan PHP lebih mudah, lebih cepat dan lebih intuitif. Web ap lipatan dibangun mengikuti pola arsitektur MVC. Panel Admin diciptakan untuk dengan mudah memperbarui dan mengelola kategori dan produk dan meng-upload gambar produk juga. Sebuah antarmuka publik dibuat tersedia juga untuk membiarkan pengguna terdaftar untuk login dan menambahkan perintah untuk gerobak mereka dan melanjutkan untuk memeriksa menggunakan PayPal.


Aplikasi ini mudah diupgrade dan fitur dapat ditambahkan atau dihapus dengan mudah berkat kemampuan Laravel untuk mengelola paket melalui Composer Packagist repositori online.


Hasil membuktikan bahwa Laravel 4 adalah efektif pilihan premium untuk kerangka PHP yang membantu pengembang cepat membangun aman, aplikasi web upgradable.

Keywords

PHP, Laravel 4, MVC, Database, eCommerce

Daftar singkatan


MVC                                  Model, View and Control
WAMP                               Windows, Apache, MySQL, and PHP
PHP                                   Personal Home Page
DBMS                                Database Management System
 SQL                                   Structured Query Language
MySQL                              My Structured Query Language
ORM                                  Object Relational Mapper
Apache                              Apache HTTP Server
HTTP                                 HyperText Transfer Protocol
CRUD                                Create, Read, Update and Delete
CSRF                                Cross-Site Request Forgery
HTML                                 HyperText Markup Language
CSS                                   Cascading Style Sheets
 JSON                                 JavaScript Object Notation
URL                                   Uniform Resource Locator
XML                                   Extensible Markup Language
API                                    Application Programming Interface
UI                                       User Interface





1    pengenalan

Tujuan dari tesis ini adalah untuk mempelajari kerangka PHP baru dan menggunakannya secara efisien untuk membangun sebuah aplikasi web eCommerce untuk sebuah perusahaan start-up lepas kecil yang akan membiarkan pelanggan potensial memeriksa produk berdasarkan kategori dan lulus perintah aman. Untuk memenuhi set persyaratan, suatu sistem yang terdiri dari aplikasi web dengan backend akan dirancang dan diimplementasikan dengan menggunakan kerangka kerja MVC modern.

Hal ini bermanfaat mempertimbangkan penggunaan kerangka PHP ketika waktu terbatas dan keterampilan pengembang coding PHP tidak sesuai dengan tingkat tinggi dituntut untuk membangun aplikasi yang kompleks. Kerangka menangani semua tugas-tugas dasar berulang dari proyek PHP, membiarkan pengembang berkonsentrasi nya / usahanya pada logika bisnis dan struktur umum dari proyek secara keseluruhan, dalam melakukannya, kerangka menjadi alat yang ideal digunakan oleh kata pengembang untuk cepat membangun prototipe operasional yang kompleks dalam hitungan jam dengan waktu minimal dihabiskan untuk coding. Kerangka menawarkan juga seluruh jajaran utilitas siap pakai dan perpustakaan.

Penggunaan kerangka kerja yang kuat dianjurkan ketika keamanan aplikasi web merupakan persyaratan penting. Bahkan menjadi suatu keharusan ketika pengembang tidak memiliki diperlukan pengetahuan untuk mencegah pelanggaran keamanan terjadi. Sebagian besar kerangka modern yang memiliki built-in fitur keamanan yang berkisar dari masukan sanitasi untuk enkripsi automatic cookie.
Struktur terorganisir dari proyek secara keseluruhan, jelas dan bersih kode yang diperlukan ketika bekerja di sebuah organisasi atau co-mengembangkan aplikasi dalam tim pengembang. Kerangka mengizinkan organisasi kode kata dalam arsitektur logis, sehingga fasilitator Tating pemeliharaan dan upgrade. Untuk mencapai hal ini, kerangka kerja PHP yang modern mengikuti pola arsitektur Model-View-Controller (MVC).
Di antara kerangka PHP yang sangat populer, Laravel menonjol dengan klaimnya pada kemampuannya untuk menghasilkan proses pembangunan yang menyenangkan bagi pengembang tanpa kehilangan fungsi aplikasi. Itu adalah salah satu dari banyak alasan itu dipilih sebagai kerangka pilihan untuk membangun sebuah aplikasi web eCommerce untuk Armel Solusi lepas start-up. Tesis ini akan belajar jika Laravel hidup sampai klaim dengan mengevaluasi kemampuannya dalam membangun dan menjalankan aplikasi web aman eCommerce dalam waktu minimal.



2    fitur utama Laravel

Penelitian ini akan fokus hanya pada fitur yang digunakan selama pembangunan aplikasi web eCommerce, jika pekerjaan ini tidak akan cukup besar untuk menutupi keseluruhan fitur dari keseluruhan Laravel 4 framework.

2.1    Architecture

Laravel adalah kerangka aplikasi web yang mencoba untuk memudahkan proses pembangunan dengan menyederhanakan tugas yang berulang digunakan di sebagian besar aplikasi web saat ini, termasuk namun tidak terbatas pada routing, otentikasi, caching dan sesi. [1]
Karena berhasil melakukan semua tugas-tugas penting mulai dari web melayani dan basis data mandat pengelolaan yang tepat untuk HTML generasi, Laravel disebut tumpukan kerangka penuh. Lingkungan pengembangan web yang terintegrasi secara vertikal ini dimaksudkan untuk menawarkan alur kerja ditingkatkan dan halus untuk pengembang. [2]
Tidak seperti lingkungan yang terintegrasi secara vertikal lainnya, Laravel adalah unik dalam cara memprioritaskan konvensi di atas konfigurasi. Bahkan, sementara banyak kerangka kerja PHP menuntut konfigurasi tugas XML berat-sebelum memulai proyek yang sebenarnya, Laravel hanya membutuhkan beberapa baris kode PHP yang akan diedit dan menjadi siap untuk digunakan. Menghindari atau menggunakan jumlah minimum file konfigurasi memberikan semua aplikasi web Laravel struktur yang mirip kode yang sangat khas dan diidentifikasi. Ini mungkin dianggap sekilas sebagai kendala serius tentang bagaimana pengembang mungkin ingin mengatur struktur nya / aplikasi web sendiri. Namun, kendala ini membuat itu benar-benar jauh lebih mudah untuk membangun aplikasi web. [2]
Semua proyek Laravel baru keluar dari kotak yang dilengkapi dengan pohon direktori lengkap dan juga banyak file placeholder menghasilkan struktur memungkinkan awal yang cepat dari proses pembangunan yang sebenarnya. Struktur ini tetap sepenuhnya disesuaikan. Berikut pada gambar berikut ini ditampilkan apa struktur seperti terlihat seperti: [3, 16.]


2.2    MVC
Istilah MVC disebutkan secara singkat di awal pekerjaan ini dan itu berharga menyebutkan sekarang Laravel sebenarnya kerangka MVC yang lengkap. MVC cepat menjadi praktek standar industri yang digunakan di setiap lingkungan pengembangan modern. Banyak kerangka kerja seperti Ruby on Rails, ASP.NET, CakePHP dan CodeIgniter memanfaatkannya untuk memisahkan logika di balik aplikasi dari lapisan representasi. [4, 8.]
Pola arsitektur MVC membiarkan aplikasi web memiliki banyak pandangan yang berbeda dari model umum tunggal. Artinya, dalam konteks kita saat membangun tion applica eCommerce web, halaman kategori, misalnya, dapat memiliki beberapa pandangan seperti Daftar Produk Lihat Produk atau galeri. Dalam sebuah lingkungan pengembangan MVC, salah satu model untuk tabel Kategori yang akan dibuat dan melalui bahwa satu model beberapa pandangan dapat dibuat. [4,8.]
Pola arsitektur MVC membiarkan pengembang menulis kode yang dapat dibagi atas dasar tiga hal berikut:
2.2. Model
Model adalah modus dimana pengembang dapat memanipulasi data. Ini terdiri dari lapisan yang berada antara data dan aplikasi. Data itu sendiri dapat disimpan dalam berbagai jenis sistem database seperti MySQL atau bahkan XML sederhana atau file Excel. [4, 8.]
2.2. Views
Tampilan adalah representasi visual dari aplikasi web kami (lapisan presentasi), mereka bertanggung jawab untuk menyajikan data yang Controller diterima dari Model (logika bisnis). Mereka dapat dengan mudah dibangun menggunakan bahasa template pisau yang datang dengan Laravel atau hanya menggunakan kode PHP polos. Pisau didorong oleh Template warisan dan bagian. Ketika Laravel membuat Views ini mengkaji pertama ekstensi file mereka, dan tergantung pada hal itu menjadi baik ".blade.php" atau hanya "php", menentukan apakah Laravel memperlakukan kami Lihat sebagai Blade template atau tidak. [3, 14.]


2.2. Control
Fungsi utama dari Controller adalah untuk menangani permintaan dan lulus data dari Model ke Tampilan. Jadi Controller dapat dianggap sebagai penghubung antara Model dan Views kami. [4, 8.]
Pengembang memiliki pilihan untuk menulis nya / logika bisnisnya baik di Router atau lers Control-. Router dapat berguna ketika berhadapan dengan aplikasi web kecil, atau cepat de- denda halaman statis. Menulis Controller untuk setiap halaman dari aplikasi web sehingga tidak perlu. [4, 12.]


Figure 2.   Interaksi antara semua bagian pokok dari pola arsitektur MVC. [3, 15]

2.2. Database

·    Eloquent ORM

The Fasih ORM disediakan dengan Laravel termasuk PHP sederhana ActiveRecord mentasi pemikiran yang memungkinkan query database masalah pengembang dengan sintaks PHP di mana alih-alih menulis kode SQL, metode hanya dirantai. Setiap tabel dalam database memiliki Model yang sesuai di mana pengembang berinteraksi dengan meja mengatakan. [5]

·        Schema builder

The Laravel Skema kelas menyediakan database agnostik (yaitu dapat berfungsi dengan tude multi DBMS) cara mengelola semua database yang terkait pekerjaan seperti membuat atau menghapus tabel dan menambahkan field ke tabel yang ada. Ia bekerja dengan banyak database sistemik tems didukung oleh Laravel dan MySQL menjadi default. Kelas Skema memiliki API yang sama di semua sistem database ini. [6]

·        Managing the database with Migrations

Migrasi dapat dianggap sebagai bentuk kontrol versi untuk database kami. Mereka memungkinkan kita untuk mengubah skema database dan menjelaskan dan mencatat semua perubahan tertentu dalam file migrasi. Setiap Migrasi biasanya dikaitkan dengan Builder Skema untuk usaha-lessly mengelola database aplikasi kita. Migrasi A juga dapat dikembalikan atau "memutar kembali" menggunakan yang sama mengatakan berkas. [7]

Menggunakan terminal kita dapat menjalankan perintah berikut untuk membuat atau menghapus tabel dalam database kami:




Command


Description


$ php artisan migrate:install


Creates the migration repository


$ php artisan migrate:make


Creates a new migration file


$ php artisan migrate:refresh


Resets and reruns all the migrations


$ php artisan migrate:reset


Rollback all the database migrations


$ php artisan migrate:rollback


Rollback the last database migration


Table 1.    Koleksi perintah yang berkaitan dengan migrasi. [4, 29]


·    Seeders

Kelas Seeder memungkinkan kita benih data ke meja kami. Fitur ini sangat berharga karena pengembang dapat memasukkan data ke tabel nya / database-nya setiap kali ia / dia ingin menguji aplikasi web. [4, 59.]
Ketika backend kosong kita bisa mengisinya dengan beberapa data dengan hanya mengeluarkan perintah berikut di terminal:
$ php artisan db:seed

2.3    Composer

Fitur lain yang membuat Laravel menonjol dari kerangka kerja lainnya adalah bahwa hal itu Komposer siap. Bahkan Laravel sendiri merupakan campuran komponen Komposer yang berbeda, ini menambahkan interoperabilitas yang sangat dibutuhkan untuk kerangka kerja.
Komposer adalah alat manajemen dependensi untuk PHP. Pada dasarnya, peran utama Komposer dalam rangka Laravel adalah bahwa ia mengelola ketergantungan encies depend- proyek kami. Misalnya, jika salah satu perpustakaan yang kita gunakan dalam proyek kami tergantung pada tiga perpustakaan lain dan bahwa ada kebutuhan untuk meng-upgrade semua perpustakaan tersebut, maka tidak ada keharusan untuk secara manual mencari dan memperbarui file. Hal ini dimungkinkan untuk memperbarui semua empat perpustakaan melalui satu perintah melalui command-line, yang, "update $ komposer". [8]
Composer Memiliki kemampuan untuk mengelola ketergantungan sampai ke tingkat n diberikan, yang berarti bahwa semua dependensi proyek kami dapat dikelola melalui satu alat yang merupakan pilihan yang sangat berguna untuk memiliki ketika kita berhadapan dengan banyak perpustakaan. Keuntungan lain menggunakan Komposer adalah bahwa hal itu menghasilkan dan menangani file autoload pada akar ven- dor / direktori kami, yang akan berisi semua dependensi proyek yang kabel sampai pemuatan auto kelas ketika dimasukkan dalam naskah PHP. Dengan demikian, tidak perlu dari sisi pengembang untuk mengingat jalan semua dependensi dan termasuk masing-masing pada setiap file proyek, dia / dia hanya perlu memasukkan autoload berkas yang disediakan oleh Communication poser. [4, 11.]
Komposer dipasang dalam bentuk executable PHP yang ditambahkan ke PATH vironment variabel ronment. Sebuah variabel lingkungan PATH adalah daftar dari lokasi yang dieksplorasi ketika perintah dijalankan di terminal. Ketika Komposer dipasang dengan benar, oper bangan dapat melaksanakannya melalui baris perintah dari setiap tempat dalam sistem file menggunakan "$ komposer" perintah. Proyek, dan dependensinya, didefinisikan dalam file JSON, bernama composer.json. [3, 22.]

Komposer adalah cara masyarakat PHP menuju ke, sehingga ada ribuan paket benar-benar teruji sudah tersedia dalam paket Composer arsip. Laravel dirancang sedemikian rupa sehingga mengintegrasikan paket Komposer mudah. Semua apa yang poser Communication perlu lakukan adalah untuk membaca isi dari file composer.json dan terhubung ke paket-agist, yang merupakan repositori online paket, untuk menyelesaikan semua dependensi, recur- sively. Dependensi ini kemudian didownload ke lokal direktori yang disebut vendor / kami, dan kemudian negara mereka dicatat ke file bernama composer.lock. [3, 25.]


Figure 3.   Pandangan dari Packagist, repositori online untuk Komposer [7]

Laravel dikombinasikan dengan kekuatan Composer memberikan pengembang lebih banyak kebebasan dalam memilih jenis paket ia / dia ingin menggunakan dengan dia / aplikasi web. Misalnya, jika dia / dia tidak suka komponen Mail default yang datang dengan Laravel, yang Swift Mailer, dan dia / dia ingin menggantinya dengan paket yang lebih disukai seperti komponen PHPMailer misalnya, yang juga Komposer siap; dengan demikian, switching ing antara dua paket akan menjadi tugas yang sangat mudah. Pengembang dapat mengganti komponen di akan dan dengan mudah ketika ada perlu melakukannya melalui Komposer dan konfigurasi Laravel. [4, 12.]


2.4    Artisan

Seorang pengembang harus biasanya berinteraksi dengan kerangka Laravel menggunakan utilitas baris-perintah yang menciptakan dan menangani lingkungan proyek Laravel. Laravel memiliki built-in alat baris perintah yang disebut Artisan. Alat ini memungkinkan kita untuk melakukan sebagian besar tugas-tugas pemrograman repetitif dan membosankan bahwa sebagian besar pengembang menghindari untuk melakukan secara manual. [4, 13.]
Artisan dapat dimanfaatkan untuk membuat kode kerangka, skema database dan membangun migrasi mereka yang dapat sangat berguna untuk mengelola sistem database kami atau memperbaikinya. Kami mungkin juga membuat benih database yang akan memungkinkan kita untuk benih beberapa data awalnya. Hal ini juga dapat digunakan untuk menghasilkan Model dasar, View dan Controller file langsung melalui baris perintah dan mengelola aset-aset dan konfigurasi masing-masing. [4, 13.]
Artisan mari kita bahkan membuat perintah kita sendiri dan melakukan hal-hal yang mudah dengan mereka seperti mengirim tertunda mail ke penerima atau apapun yang dapat diperlukan untuk benar menjalankan aplikasi web kami. Unit test untuk aplikasi web kami juga dapat dijalankan melalui Artisan. [4, 13.]

3    Creating the workflow and configuring our environment

3.1    Operating system

Laravel adalah kerangka lintas platform yang dibangun dengan interoperabilitas dalam pikiran. Hal ini dapat digunakan di atas berbagai sistem operasi, termasuk namun tidak terbatas pada Linux, Mac OSX dan Windows. Sistem operasi pilihan untuk proyek ini adalah Microsoft Win dows versi 8.1, yang merupakan persembahan terbaru dari raksasa perangkat lunak.

3.2    Terminal

Seperti telah dibahas sebelumnya dalam karya ini, pengembang biasanya berinteraksi dengan Laravel kerangka melalui baris perintah. Sistem operasi Windows dilengkapi dengan dua perintah-garis tersebut, yaitu, prompt Command dan Powershell. Namun, untuk proyek kami kita akan menggunakan populer terminal pihak ketiga bernama Cygwin. Jadi mengapa membuat pilihan seperti itu? Alasannya adalah bahwa salah satu ketidaknyamanan utama bahwa oper bangan bisa hadapi dalam lingkungan pengembangan modern mendukung nya / aplikasi nya di seluruh platform heterogen. [9]
Cygwin menawarkan lingkungan shell UNIX / Linux standar, bersama dengan banyak perintah sangat berguna untuk platform Windows. Dengan memanfaatkan Cygwin, pengembang dapat menangani berbagai lingkungan dengan cara yang dapat diandalkan dan efektif. [9]

Untuk menginstal Cygwin kita perlu men-download file eksekusi dari website penulis [9] dan klik dua kali pada file yang didownload dan ikuti petunjuk, instalasi dilakukan secara otomatis. [9]

3.3    Text editor

Untuk proyek ini editor teks pilihan untuk membangun aplikasi web kami akan Sublime Text_3. Ini adalah Editor pengembang Web yang dapat melakukan beberapa tugas yang berguna dari jendela editor itu sendiri. Oleh karena itu, pengembang tidak harus terus-menerus beralih di antara jendela dan menjalankan tugas-tugas dari aplikasi lain. Aspek penting lain yang dari editor Sublime Text_3 adalah Paket Control, manajer paket ini memungkinkan kita untuk menambahkan fitur paket ini. [4,226]

3.4    Bootstrap as the HTML5/CSS3/Javascript framework

Bootstrap ini bisa dibilang kerangka pembangunan web frontend industri yang paling populer. Ini menawarkan berbagai user-friendly, cross-platform dan potongan diuji kode untuk fre- paling sering digunakan konvensi standar UI. Bootstrap signifikan mempercepat usaha membangun antarmuka antarmuka web karena, benar-benar teruji campuran siap pakai dari HTML markup, gaya CSS, dan JavaScript perilaku. Dengan tions yayasan penting cepat mengatur, kami yakin dapat memodifikasi UI di atas dasar yang kokoh. [10, 7.]
Ada banyak cara untuk men-download Bootstrap, tetapi tidak semua cara ini download Bootstrap adalah sama. Untuk proyek ini meskipun, dan demi kecepatan, kita akan menggunakan Initializr yang menghasilkan template berdasarkan HTML5 Boilerplate oleh mengizinkan veloper de- untuk memilih komponen dia / dia inginkan dari itu. [11]
Kemudian setelah mengklik tombol download kita akan mendapatkan direktori dan file-file berikut, secara logis pengelompokan aset umum dan menyediakan baik variasi disusun dan minified. Direktori dan berkas pohon akan terlihat seperti ini: [12]


bootstrap/
── css/
│   ── bootstrap.css
│   ── bootstrap.min.css
│   ── bootstrap-theme.css
│   └── bootstrap-theme.min.css
── js/
│   ── bootstrap.js
│   └── bootstrap.min.js
└── fonts/
── glyphicons-halflings-regular.eo
── glyphicons-halflings-regular.svg
── glyphicons-halflings-regular.ttf
└── glyphicons-halflings-regular.woff

Harap dicatat bahwa tesis ini terutama berfokus pada kerangka Laravel, oleh karena itu penggunaan kerangka Bootstrap atau markup HTML, CSS styling dan tindakan JavaScript aplikasi web kami tidak akan dibahas lebih lanjut dari bab ini ini.

3.5    ApacheMySQL–PHP package

Database adalah kumpulan data dengan struktur yang telah ditetapkan. Himpunan data yang perwakilan- sents dapat berkisar dari sesedikit daftar belanja untuk volume besar informasi dalam jaringan korporasi. Sebuah sistem manajemen database yang dibutuhkan untuk memanipulasi data yang disimpan dalam database komputer. [13]
Salah satu sistem manajemen database yang paling populer adalah MySQL server, menggunakan Structured Query Language yang biasa disebut sebagai SQL. SQL ini bisa dibilang bahasa standar yang paling umum digunakan untuk memanipulasi database. Pernyataan SQL dapat digunakan dalam berbagai cara, mereka mungkin dimasukkan secara langsung atau dimasukkan ke dalam kode yang ditulis dalam bahasa yang berbeda, atau menggunakan API yang menyembunyikan sintaks SQL sama sekali. Dalam proyek kami, kami akan menggunakan opsi kedua embedding pernyataan SQL ke dalam lingkungan pemrograman yang berbeda. [13]
The Laravel kerangka memiliki persyaratan sistem sangat sedikit, namun secara eksplisit perlu versi PHP 5.3.7 atau di atas dan mcrypt PHP Extension, yang terakhir dibundel dengan versi yang lebih baru dari PHP. [15]
Kami WAMP tumpukan pilihan untuk proyek ini adalah WampServer. Untuk menginstalnya kita perlu men-download file eksekusi dari penulis situs [14] dan klik dua kali pada file yang diunduh dan hanya mengikuti petunjuk, instalasi dilakukan secara otomatis. Paket WampServer disampaikan dengan rilis terbaru dari Apache, MySQL dan PHP, yaitu, Apache: 2.4.4, MySQL: 5.6.12, PHP: 5.4.12 dan PHPMyAdmin: 4.0.4. [14]


Figure 4.   Versi PHP diinstal

3.6    Installing Composer

Seperti yang disebutkan sebelumnya dalam pekerjaan ini, kerangka Laravel menggunakan Komposer untuk mengelola dependensinya. Untuk menginstal Komposer pada mesin Windows kita harus yakin terlebih dahulu bahwa kita memiliki versi yang sesuai dari PHP diinstal, maka kita bisa mendapatkan Composer installer Windows dari penulis situs [8] dan download file Composer- Setup.exe. Selama proses instalasi, installer akan meminta lokasi eksekusi PHP di sistem kami, dan karena kita menggunakan WAMP lokasi C: /wamp/bin/php/php5.4.12/php.exe. Instalasi akan dilanjutkan secara otomatis maka dengan menyelesaikan instalasi Komposer dan menambahkan php dan Komposer perintah untuk PATH kami. [3, 24.]
Untuk memastikan bahwa Composer terpasang dengan benar, kita membuka jendela terminal baru dan masukkan perintah "$ komposer v", perintah ini harus output pesan informasi versi. [3, 24.]


Figure 5.   pesan informasi versi Komposer

3.7    Installing Laravel 4

Kami dapat menginstal Laravel dengan hanya mengeluarkan "$ composer create-project laravel/laravel" perintah di terminal kami diikuti dengan nama proyek, tapi sebelum itu kita harus yakin bahwa kita mengubah direktori ke folder pembangunan kita. [15]


Figure 6.   Perintah dikeluarkan untuk membuat proyek baru Laravel

Setelah instalasi berhasil, Laravel mungkin masih memerlukan satu set izin untuk dikonfigurasi, yaitu folder dalam direktori aplikasi / storage memerlukan akses tulis oleh server web. Hal ini dapat dicapai dengan mengeluarkan perintah " $ chmod –R 755" diikuti dengan nama direktori. "[15]


Figure 7.   Mengubah izin untuk mengakses aplikasi direktori / storage

3.8    Database

Untuk membuat database untuk proyek Laravel, kita hanya membuka panel phpMyAdmin di browser kita pilihan dan kita melanjutkan untuk membuat database dengan memberi nama dan mengedit kredensial keamanan.


Figure 8.   Membuat Database

Sebelum memulai, kita harus yakin untuk mengkonfigurasi koneksi database dalam file app/config/database.php dengan mengedit baris kode PHP yang berisi mandat untuk mencocokkan kredensial database kami ini. Default database Laravel, yang merupakan MySQL akan disimpan sebagai sistem manajemen database kami untuk proyek kami saat ini.


Figure 9.   Database connection set-up

Setelah mengkonfigurasi database kita bisa mulai aplikasi kita tanpa perlu untuk menembak server lokal WAMP kami sebagai Laravel menggunakan server pengembangan built-in yang dibundel dengan PHP versi 5.4 atau yang lebih baru. Untuk memulai server pengembangan kami, kami hanya menggunakan Arti- san perintah " $ php artisan serve". [3, 32.]


Figure 10. Starting the Laravel’s built-in development server


Untuk memastikan bahwa aplikasi kita dan berjalan dan bahwa instalasi Laravel kami dilakukan dengan benar kita membuka browser web kami dan kami masukkan URL berikut: http://localhost:8000. Kita harus disambut dengan pesan selamat datang Laravel ini.


Figure 11. Screenshot of a successful Laravel installation
Ini mengakhiri paruh pertama kerja ini di mana kami memperkenalkan kerangka Laravel dan dibuat dan dikonfigurasi lingkungan pengembangan untuk proyek eCommerce kami. Berikutnya, proses pembangunan aplikasi web kami akan ditutupi sepenuhnya.

4    Building the application with Laravel 4

4.1    Designing our application

4.1. The Idea

Tujuan dari proyek ini adalah untuk membangun database dibrowse kategori dan produk. Administrator akan dapat membuat halaman untuknya / kategori dan produk dan masukan informasi sederhana seperti nama, ketersediaan, dan gambar untuk setiap produk. Aplikasi web kami akan mendukung dasar Buat-Ambil-Update-Delete operasi (CRUD). Kami akan membuat halaman juga tersedia untuk publik dengan pilihan untuk menyaring produk berdasarkan kategori dan membiarkan pengguna login dan lulus pesanan mereka dan melanjutkan ke checkout menggunakan PayPal. Semua keamanan, otentikasi, dan fitur izin akan dibahas dalam rincian lebih lanjut dalam bab "Otentikasi dan keamanan".

4.1. Entities, relationships and attributes

Awalnya, entitas aplikasi harus didefinisikan. Suatu entitas adalah tempat, hal atau satu orang tentang dimana data dapat disimpan atau diklasifikasikan dan telah menyatakan hubungan dengan entitas lainnya. Dari persyaratan awal, kita dapat mendefinisikan entitas berikut dan atribut masing-masing: [3, 30]

•    Kategori, yang memiliki identifier dan nama.

•    Produk yang memiliki identifier numerik, judul, deskripsi, harga, ketersediaan dan gambar.

•    Pengguna yang memiliki identifier numerik, nama pertama, nama terakhir, email dan telepon dan apakah dia seorang admin (default bukan admin).

Informasi ini penting dalam membantu kami dengan membangun skema database kami yang akan menyimpan yang telah ditetapkan entitas, hubungan, dan atribut dan Model mereka, yaitu, kelas PHP yang mewakili objek dalam database kami. [3, 30]


Figure 12. Hubungan antara konstituen dari database

NB: PK->Primary Key and FK->Foreign Key.
Dari diagram kita dapat melihat bahwa kategori akan memiliki "hasMany" hubungan dengan produk dan produk akan memiliki "belongTo" hubungan dengan kategori. Hal ini akan dibahas lebih jauh lagi ketika kita akan membangun Model kami.

4.1. Map of the application

Saat ini, struktur URL dari aplikasi web kami harus didefinisikan. Ada banyak keuntungan dalam memastikan untuk memiliki URL ekspresif dan bersih. Dari sudut pandang kegunaan, navigasi aplikasi web kami akan dilakukan dengan mudah dan tampak kurang menakutkan untuk pengunjung. Mereka, URL, juga akan biasanya peringkat tinggi dalam hasil mesin pencari espe- secara resmi jika mereka memiliki kata kunci yang sesuai. Kita akan memanfaatkan rute berikut [18]
dalam aplikasi web kami untuk memenuhi set awal persyaratan: [3, 31.]



Method


Route


Description


GET


/


Index


GET


admin/categories/index


Overview page


GET


admin/categories/create


Form to create a new category page


GET


admin/categories/destroy


Form to confirm deletion of page


GET


admin/products/index


Overview page


GET


admin/products/create


Form to create a new product page


PUT


admin/products/index


Form to update a product page


GET


admin/products/destroy


Form to confirm deletion of page


GET


store/category/id


Overview of single category


GET


store/view/id


Overview of single product


GET


store/cart


Overview page


GET


store/contact


Overview page

Table 2.    The applications set of routes


4.2    Creating a new application


4.2. Creating a main view

Seperti yang dijelaskan sebelumnya dalam karya ini, blade template mari kita membuat layout hirarkis dengan membiarkan template menjadi bersarang dan / atau diperpanjang. [3, 40]
Prosedur ini cukup lurus ke depan, yaitu, kita menyalin file "index.html" yang datang dengan instalasi Bootstrap kami dan kami menyimpannya sebagai app / views / layouts / main.blade.php.
Kami akan menggunakan Laravel pembantu bukan kode HTML biasa, yang akan membantu kita menulis kode lebih ringkas dan juga melarikan diri dari setiap entitas HTML. Kami melakukan perubahan ini berikut contoh-contoh ini: [16]

For styles:    <link rel="stylesheet" href="css/main.css">  becomes
        {{ HTML::style('css/main.css') }}

For scripts <script src="js/vendor/modernizr-2.6.2.min.js"></script>  becomes
         {{ HTML::script('js/vendor/modernizr-2.6.2.min.js') }} For images:  <img src="img/user-icon.gif" alt="Sign In" />  becomes
{{ HTML::image('img/user-icon.gif', 'Sign In') }}

Untuk menentukan Blade template utama kita menggunakan struktur dasar sebagai berikut: [17]

<html>

<body>

@section('sidebar')

This is the main sidebar.



<div class="container">

@yield('content')

</div>

</body>

</html>

Kemudian kita bisa menggunakan template pisau utama dari dalam Lihat lain dengan menggunakan struktur dasar ini: [17]

@extends('layouts.main)


@section('sidebar')



<p>This is appended to the main sidebar.</p>

@stop


@section('content')

<p>This is the body content.</p>

@stop

The "yield" perintah adalah sebuah tempat untuk banyak bagian yang pandangan bersarang dapat mengisi dan menimpa. Sementara "section" dan "stop" perintah baik menentukan blok konten yang akan disuntikkan ke dalam template utama. Sebuah menskemakan seluruh proses ini dapat dilihat pada diagram berikut: [3,40.]


Figure 13. Blocks of content being injected into main template [3, 40]

Praktis kita mengosongkan bagian konten utama kami dalam file main.blade.php dan menggantinya denganyield ('konten'). Kode yang dihasilkan akan menjadi "utama" template yang masing-masing pandangan kami dalam aplikasi web kami akan menggunakan. [3, 40.]
Sebuah area notifikasi antara header dan konten halaman telah disiapkan jika ada kebutuhan untuk menginformasikan pengguna tentang hasil dari tindakan-tindakan tertentu. Ini bijak Flash-pesan berasal dari objek Session.
Langkah berikutnya adalah untuk membawa sumber daya lain untuk View utama kami, untuk melakukannya kita copy semua css / js / img / font aset yang datang dengan instalasi Bootstrap kami dan kami menempatkan mereka di dalam app/public directory kita. [3, 40.]
Penciptaan pandangan individu untuk setiap bagian dari aplikasi web kami akan dibahas dalam rincian lengkap kemudian di " Creating views" bagian dari pekerjaan ini.

4.2. Menciptakan model fasih dan skema masing-masing.

Seperti telah kita lihat sebelumnya, Laravel 4 dibundel dengan ORM sendiri bernama fasih, perangkat canggih ini akan membiarkan kita mendefinisikan entitas kami, peta mereka untuk tabel database masing-masing, dan memanipulasi mereka dengan hanya menggunakan metode PHP bukannya SQL sintaks.

Kita mulai dengan mendefinisikan model dengan yang aplikasi kita akan berinteraksi. Kami sebelumnya diakui tiga utama entitas, kategori, produk dan pengguna. Ini adalah konvensi di antara para pengembang Laravel untuk menulis nama model dalam bentuk tunggal; model bernama Produk akan memetakan ke meja produk dalam database, dan model Kategori akan memetakan ke kategori.
Kategori Model, disimpan di dalam app/models/Category.php, akan memiliki "hasMany" hubungan dengan model Produk [21]


Figure 14. Category model

Untuk membuat migrasi untuk model ini kami mengeluarkan perintah $ php artisan migrate:make" diikuti dengan nama migrasi.


Figure 15. Migration creation

Kami kemudian buka file migrasi dalam app/database /migrasi dan kita menulis skema menggunakan kelas Skema. [21]


Figure 16. Pembangun skema dengan membuat dan drop metode


Untuk membuat tabel dalam database yang harus kita lakukan sekarang adalah untuk mengeluarkan perintah $ php artisan migrate.


Figure 17. Artisan migrate to create the table in the database






Figure 18. Categories table created successfully


Kami mengikuti langkah-langkah sebelumnya yang sama untuk menciptakan model produk, yang disimpan di dalam app/models/Product.php, dan akan memiliki "belongsTo" hubungan dengan model Kategori. [21]


Figure 19. Product model

Figure 20. Product schema


Jenis harus selalu sama. Jadi kita harus berhati-hati untuk selalu membuat kolom kunci asing unsigned ketika referensi sebuah incrementing integer. [6]


Figure 21. Products table created successfully


Model Pengguna adalah kasus khusus karena implikasi keamanan, itu akan dibahas kemudian dalam "Otentikasi pengguna" bagian dari pekerjaan ini.



4.2. Mengelola Gambar sebagai contoh manajemen ketergantungan

Untuk produk kami melihat di toko kita perlu meng-upload foto dan mengubah ukuran mereka untuk dapat melihat mereka sebagai thumbnail. Untuk melakukannya, kita perlu menggunakan paket eksternal bernama Intervention/image. Untuk menambah ketergantungan baru ini, kita harus menginstalnya melalui Komposer. Kami menuju ke file yang composer.json dan tambahkan baris yang disorot berikut: [4, 109.]


Figure 22. Adding a new dependency throuComposer


Dan kemudian kita jalankan perintah berikut dalam terminal Composer kami: "$ composer update". Ini akan menginstal paket Intervensi dalam direktori penjual. Untuk memastikan bahwa Laravel autoloaders itu kami juga perlu menambahkan penyedia layanan kelas. Kita perlu ke app/config/app.php di bagian array yang penyedia layanan dan tambahkan baris disorot berikut untuk Intervensi:

Figure 23. Binding the service provider with the Laravel setup


Setelah menyelesaikan langkah sebelumnya, kita dapat memiliki akses ke perpustakaan Intervensi melalui alias gambar otomatis diambil oleh Laravel. Untuk melakukannya, dan dalam alias kelas bagian dari file yang sama kita perlu menambahkan Fasad [19], jadi kami hanya dapat mengaksesnya melalui sebuah alias di kami alias Array: [4, 109.]


Figure 24. Adding the Facade for Intervation


Langkah terakhir adalah untuk menciptakan sebuah lokasi untuk menyimpan gambar kita upload. Kami akan menambahkan folder bernama "produk" ke direktori public/image/.
Gambar menyimpan dan mengubah ukuran metode yang akan digunakan dalam produk controller kita.



4.2. Membuat Controller dan rute masing-masing


Seperti yang kita lihat sebelumnya dalam karya ini, fungsi utama dari Controller adalah untuk menangani permintaan dan lulus data dari Model ke Tampilan. Jadi Controller dapat dianggap sebagai penghubung antara Model dan Views kami.