Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. PHP

Membangun sebuah Panel Admin dengan Fule PHP Framework

by
Read Time:16 minsLanguages:

Indonesian (Bahasa Indonesia) translation by Ari Gustiawan (you can also view the original English article)

Pada bagian pertama dari seri ini, kita melihat dasar-dasar framework FuelPHP. Pada bagian kedua ini, kita akan dapat menambah itu gigi dan pindah ke beberapa topik yang lebih maju! Kita akan menciptakan sebuah panel admin untuk aplikasi kita, meliputi penggunaan ORM dan menggunakan paket otentikasi untuk membatasi akses.

Bergabung dengan saya setelah istirahat untuk memulai!


Pengenalan

Karena artikel pertama Fuel telah diubah namanya menjadi FuelPHP. Juga tidak seperti artikel pertama yang didasarkan pada v1.0.1 artikel ini memerlukan v1.1.0 sehingga beberapa hal yang sedikit berbeda. Semua teori yang Anda telah belajar dari artikel pertama masih akurat dan tidak banyak yang berubah jadi ini harus menjadi mudah.


Langkah 1 - mengatur Oil

Jika Anda belum sudah menginstal utilitas command line oil dan cukup beruntung untuk berjalan pada Linux, Mac, Solaris, dll maka melakukannya dengan perintah berikut:


Langkah 2 - membuat sebuah aplikasi baru

Perintah oil akan membantu Anda membuat proyek baru dengan beberapa kunci-stroke dan alias php oil ketika di dalam aplikasi FuelPHP Anda:

Ini akan mengatur aplikasi blog untuk kita dan dengan asumsi Anda memiliki Apache atau beberapa server web lain yang berjalan pada folder "Sites" Anda harus dapat memuat URL berikut dan melihat halaman Selamat datang.

alt textalt textalt text

Sekarang FuelPHP hidup dan server web Anda jelas bekerja, kita dapat memulai konfigurasi aplikasi kami.


Langkah 3 - konfigurasi aplikasi Anda

Membuka editor favorit Anda dan kami akan mulai dengan menyiapkan koneksi database dan mengkonfigurasi aplikasi. Ini hampir identik dengan v1.0.x, sehingga membuat database dan mengatur pengguna SQLseperti biasanya anda lakukan. Ketika datang ke konfigurasi database ada dua perbedaan:

  • PDO adalah sekarang driver default
  • FuelPHP v1.1 memiliki konfigurasi environment-based folder sekarang.

Perubahan cukup sederhana, tetapi Anda dapat swap kembali ke menggunakan drive MySQL native jika Anda suka. PDO lebih berguna bagi pengembang seperti itu berarti bahwa aplikasi Anda akan bekerja dengan hampir semua database engine tidak hanya beberapa yang telah FuelPHP khusus driver yang dibangun untuk mereka. Itu berarti ini bisa sama seperti dengan mudah menjadi SQLite atau PostgreSQL.

Hanya membuka fuel/app/config/development/db.php dan mengubah konfigurasi Anda, mana dbname = blog adalah apa yang disebut database Anda dan Anda sendiri username dan password untuk database server:

Selanjutnya Anda akan perlu untuk membuka fuel/app/config/config.php dan mengaktifkan paket auth dan orm seperti yang disarankan dalam posting pertama.

Dalam file konfigurasi ini, kita perlu membuat satu perubahan kecil ke array whitelisted_classes yang akan memungkinkan kita untuk memvalidasi objek ke view:

Pengaturan grup

Auth paket disertakan dengan FuelPHP adalah driver berbasis dan secara default kita menggunakan "SimpleAuth" driver yang hanya ada dalam paket. Ketika Anda lebih berpengalaman dengan FuelPHP, Anda dapat mulai untuk membuat custom driver untuk mengintegrasikan dengan sistem pengguna lain - seperti pihak ketiga forum, sistem manajemen konten, dll.

Untuk mengaktifkan grup untuk SimpleAuth, kami cukup membuka fuel/packages/auth/config/simpleauth.php dan mengatur grup berikut:

Ini, tentu saja, bisa apa-apa, tapi cukup standar untuk kebanyakan aplikasi dan akan bekerja untuk tutorial ini.


Langkah 4 - membuat pengguna

Seperti kita sedang membangun sebuah panel admin, kita perlu membuat tabel pengguna dan kemudian mengisi dengan record pengguna yang akan menjadi administrator pertama. Kita bisa menggunakan sesuatu seperti phpMyAdmin atau GUI seperti Navicat, tetapi lebih baik untuk melakukan hal-hal melalui Oil jadi kita tetap dalam basis kode kami. Ini berarti password hashing adalah sudah di salt dengan benar dengan driver apa pun yang digunakan - dan adalah bagaimana kita akan melakukan ini:

Ini menciptakan user model untuk kita dan menciptakan migrasi lain yang akan membangun tabel user kami ketika memperbaiki oil bermigrasi tugas dijalankan. Berikutnya kita harus menciptakan Administrator user, yang, sekali lagi, kita bisa melakukan melalui GUI tapi mana yang menyenangkan itu?

Kami telah menggunakan Oil konsol untuk menulis kode secara real-time dan mendapat jawaban. Auth::create_user() dimasukan username, password, alamat email dan group_id untuk admin, yang sekarang kita hanya akan menggunakan 100 - yang kita tentukan dalam konfigurasi. 1 adalah respon dari kode, yang berarti user_id memiliki nilai 1.


Langkah 5 - kode generasi

Generator adalah cara yang bagus untuk membangun banyak kode dari awal dan memulai.

Seperti dijelaskan dalam artikel pertama kita dapat menggunakan scaffolding untuk membangun potongan besar aplikasi dengan cepat. Ini dilakukan melalui perintah oil dan semua sangat opsional, tetapi ini adalah cara yang bagus untuk membangun banyak kode dari awal. Beberapa orang melihat kode generasi sebagai "tool untuk orang-orang yang tidak tahu bagaimana membuat kode" atau yang semacam sihir hitam, tetapi jika Anda baru di framework dan tidak mau harus belajar bagaimana untuk menempatkan semuanya bersama-sama maka memiliki sistem yang membuat kode untuk Anda tidak berpikir seperti hal yang buruk.

FuelPHP v1.1 mengambil kode generasi satu langkah kecil lebih lanjut. Bukan hanya membuat scaffolding (unprotected CRUD) Anda bisa menghasilkan Admin kode. Ini bekerja dalam cara yang sama tetapi menerapkan template admin sederhana, admin controller, dll dan menggunakan paket auth untuk mengunci kode yang dihasilkan. Mengambil keuntungan dari Bootstrap Twitter, ini semua terlihat cukup baik untuk digunakan dan dengan hanya sedikit mengutak-atik Anda akan memiliki sebuah aplikasi yang Anda dapat dipakai.

Hal ini dilakukan melalui baris perintah menggunakan perintah oil. Kita akan menghasilkan beberapa kode lalu berjalan melalui itu.

Ini adalah sedikit kode karena itu adalah pertama kalinya dijalankan. FuelPHP akan mengatur beberapa dasar template dan file, kemudian membangun komponen MVC untuk bagian post. Ingat, ini adalah seperti menulis kode diri sendiri, tapi lebih cepat. Anda dapat mengambil melihat output ini dengan pergi ke /blog/public/admin/posts:

Posts - Admin Generated codePosts - Admin Generated codePosts - Admin Generated code

Memahami controller

Kami telah menambahkan Controller_Base yang akan berisi logika untuk seluruh aplikasi Anda, sehingga setiap controller dapat extend dari ini. File hanya berisi:

Dengan extend Controller_Template, Semua view akan dibungkus oleh template secara otomatis. Maka dalam fungsi before() kita melakukan sedikit logika untuk mendapatkan pengguna saat ini dan membuatnya tersedia sebagai $this-> current_user di controller dan $current_user di view.

Controller lain akan dibangun disebut Controller_Admin yang extend Controller_Base, begitu juga memiliki pengguna saat ini sedang dibangun kita dapat memeriksa untuk melihat apakah pengguna benar-benar admin:

Anda akan melihat bahwa controller ini set template kustom daripada mencari di fuel/app/views/template.php, ia akan mencari fuel/app/views/admin/template.php. Kemudian jika pengguna tidak cocok member(100) - admin ID grup yang ditetapkan sebelumnya - mereka akan dikirim halaman login.

Extend controller

Salah satu fitur yang sangat berguna yang FuelPHP adalah untuk memungkinkan Anda untuk memperluas controller lainnya. Biasanya mereka hanya dimuat secara langsung oleh kelas permintaan setelah dirutekan ke oleh URL, tapi kadang-kadang hal ini berguna untuk memperpanjang controller untuk berbagi logika atau metode. Dalam kasus ini, kita yang sudah memeriksa izin di Controller_Admin sehingga kita dapat extend itu controller untuk menggunakan kembali logika ini.

Controller_Admin_Posts extend Controller_Admin. Ini berarti itu before() check sama dan oleh karena itu dilindungi dalam cara yang sama seperti kontroler lain dalam panel admin Anda.

Sekarang apa?

Kode generasi pada dasarnya adalah langkah pertama dalam bekerja pada sebuah aplikasi. Kita masih perlu untuk men-tweak form kami dan membuat frontend. Misalnya, jika Anda pergi untuk membuat atau mengedit postinpost ini akan menunjukkan bidang user_id sebagai text box.


Langkah 6 - memperbarui form CRUD

Kita akan ingin memodifikasi metode action_create() dalam fuel/app/classes/admin/posts.php sehingga kita punya daftar pengguna yang tersedia. Untuk melakukan hal ini kita dapat mengganti metode dengan kode ini:

Ini adalah sama dengan kode sebelum dengan dua perubahan:

Hal ini menciptakan objek View baru. Kami dapat menetapkan properti view ini dengan menetapkan mereka sebagai properti, sehingga data pengguna kami dapat memasukan dengan mudah dan biasanya akan bekerja sedikit seperti ini:

Sekarang kita membuat sebuah update serupa untuk action_edit():

Namun, karena view create.php dan edit.php berbagi tema _form.php parsial, dan properti hanya menetapkan variabel tertentu satu view kita perlu menggunakan metode View:: set_global():

Ini menggunakan Model_User objek untuk mendapatkan semua pengguna kami, kemudian merata mereka untuk array asosiatif untuk form.

HTML sekarang perlu berubah, sehingga menghapus div pembungkus "slug" - kita akan lakukan itu sendiri dan mengubah bidang user_id dari menjadi input box ke select box:

User dropdown formUser dropdown formUser dropdown form

Ini akan mengatur kotak untuk menunjukkan semua pengguna dan default untuk saat ini login pengguna jika tidak diberikan. Itulah tweak hanya kita perlu membuat pada titik ini, jadi mari kita membuat frontend!

Frontend

Membuat blog dasar frontend benar-benar sederhana sehingga tidak akan khawatir tentang menggunakan kode generasi.

Buat controller fuel/app/classes/controller/blog.php baru:

Dan file view fuel/app/views/blog/index.php:

Ini adalah hanya loop sederhana melalui $posts array yang berisi semua artikel Anda.

Comment formComment formComment form

Foreach loop, hyperlink dan ringkasan adalah semua yang kita butuhkan pada file view ini dan kami akan membuat file tampilan lain untuk benar-benar melihat post. Kami akan memanggil ini action_view() metode controller dan membuat file tampilan yang disebut view.php:

Ini adalah metode untuk blog controller:

Metode find_by_slug() adalah "magic method" yang akan membangun WHERE slug = "foo" kueri Anda dan mengembalikan satu Model_Post dengan data tersebut.

Comment formComment formComment form

Sekarang orang dapat melihat website Anda - mengerikan unstyled - dan melihat blog dasar, dan Anda memiliki antarmuka admin untuk mengelola itu!


Langkah 7 - menggunakan ORM

Sejauh ini kita telah menggunakan ORM untuk model kami lakukan CRUD dasar tapi kita belum melihat ada hubungannya dengan hubungan. ORM membuat ini sangat mudah seperti, baik berdiri untuk "Objek Relational Mapping" karena suatu alasan. Untuk mengatur hubungan yang perlu kita lakukan adalah mengubah model kami sedikit untuk menjelaskan bagaimana ORM harus berhubungan data.

Post yang dibuat oleh satu pengguna, jadi kita katakan "dimiliki" pengguna. Di Model_Post kita dapat menambahkan:

Pengguna dapat memposting beberapa blog, jadi kita tambahkan baris ini:

Cara cepat untuk menguji ini bekerja adalah dengan menembakkan konsol oil:

Bagus, hubungannya bekerja!

Sekarang dalam pandangan kami dapat bekerja dengan $post->user dan tampilkan nama mereka, jadi mari kita mengubah fuel/app/views/blog/view.php:

Melakukan hal-hal dengan cara ini disebut lazy loading. Apa yang pada dasarnya terjadi adalah bahwa ketika Anda meminta $post->user ORM mengembalikan objek pengguna berdasarkan isi user_id. Ini berarti untuk mendapatkan pos dan pengguna pertama dua query, mendapatkan kedua akan ketiga, dll dan begitu itu dapat berakhir menjadi sangat lambat dengan semua query tambahan ini.

Untuk meningkatkan kinerja Anda dapat beralih dari lazy loading eager loading yang pada dasarnya menceritakan ORM yang Anda akan bergabung dengan pengguna pada sehingga harus melakukannya sebagai bagian dari query pertama. Ini dapat membuat permintaan lebih besar satu tetapi ORM akan mengiris itu baik untuk Anda dan Anda tidak akan melihat perbedaan.

Jika Anda melihat query ORM menghasilkan, itu akan menjadi sesuatu seperti ini:

Pada awalnya ini mungkin terlihat gila, tapi ORM tahu persis apa yang terjadi. Menggunakan pendekatan ini di masa lalu saya telah mengurangi sebuah aplikasi dari menjalankan 300 + query pada halaman sibuk (sangat lambat) ke sekitar 2 (sangat cepat).


Langkah 8 - menambahkan komentar

Banyak tutorial "membuat sebuah blog" berhenti sebelum mereka mendapatkan komentar yang saya pikir adalah pemandangan bawah utama. Kebutuhan setiap blog komentar dan kami ingin menambahkannya dengan cepat sehingga kita dapat pergi dan melakukan sesuatu yang lebih menyenangkan, sehingga kita dapat menggunakan kode generasi untuk membangun antarmuka admin:

Komentar akan membutuhkan beberapa tweak yang serupa seperti Post sehingga membuat mereka kemudian setup hubungan.

Model_User

Model_Post

Model_Comment

Menambahkan komentar melalui antarmuka cara curang, dengan pergi ke http://localhost/blog/public/admin/comments/create dan memasuki salah satu

Comment adminComment adminComment admin

Sekarang kita dapat menguji hubungan di konsol lagi:

Output array benda ORM sedikit verbose, tetapi setidaknya kita bisa melihat data. Ini berarti hubungan bekerja dengan baik, jadi mari kita mengubah ORM query dalam blog controller action_view() metode untuk menyertakan komentar:

Sekarang memperbarui tampilan blog untuk output komentar dan memiliki form untuk menambahkan lebih banyak:

Kode ini akan menampilkan semua komentar dalam style yang sangat dasar diikuti oleh form benar-benar sederhana menggunakan Twitter Bootstrap markup. Saya yakin Anda dapat menyiapkan beberapa styling untuk bagian komentar.

Comment formComment formComment form

Kita dapat melihat komentar sedang ditampilkan dan apapun yang ditambahkan juga akan diletakkan. Jadi tahap berikutnya dan terakhir dalam proses adalah untuk mendapatkan komentar yang disimpan.

Sebaris dengan Form::open('blog/comment/'.$post->slug) akan menetapkan action untuk blog/comment/women-love-guys-who-use-fuelphp yang berarti Controller_Blog butuh action_comment($slug) metode baru yang seharusnya terlihat seperti ini:


Ringkasan

Artikel ini melewatkan beberapa hal seperti cara set up sebuah URL cantik bukan localhost/blog/public dan bagaimana menggunakan validasi form dalam model atau controller, tetapi semua ini dapat ditemukan dalam dokumentasi FuelPHP. Aku merencanakan untuk menyentuh pada hal-hal seperti Upload File dan migrasi sedikit lebih tapi kembali ini semua sudah didokumentasikan.

Anda harus memiliki kode cukup sekarang untuk memilih terpisah dan bermain dengan, dan proyek apa pun yang Anda memilih untuk bekerja dengan FuelPHP sudah memiliki sebuah blog sekarang - jadi melempar halaman splash, desain dan Anda siap untuk membuat SquareFaceTwitBook berikutnya.

Advertisement
Did you find this post useful?
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.