7 days of WordPress plugins, themes & templates - for free!* Unlimited asset downloads! Start 7-Day Free Trial
Advertisement
  1. Code
  2. PHP

Pengantar Views & Templating di CodeIgniter

Read Time: 12 mins

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

Views adalah unsur utama dalam aplikasi MVC, dan aplikasi CodeIgniter tidak berbeda. Hari ini, kita akan mempelajari apa itu view, dan menemukan bagaimana view dapat digunakan untuk membuat solusi templating untuk proyek CodeIgniter Anda.

Bagian pertama dari tutorial ini akan mendidik pemula yang lengkap untuk CodeIgniter tentang apa tampilan, dan bagaimana menggunakannya dalam aplikasi yang khas. Babak kedua akan membahas motivasi untuk menemukan solusi templating, dan membimbing pembaca melalui langkah-langkah yang diperlukan untuk membuat perpustakaan templating sederhana, namun efektif. Tertarik? Ayo mulai!


Apa itu Views?

Views adalah file khusus yang digunakan dalam CodeIgniter untuk menyimpan markup yang dihasilkan oleh aplikasi, biasanya terdiri dari HTML dan tag PHP sederhana.

“Views hanyalah halaman web, atau fragmen halaman, seperti header, footer, sidebar, dll. Bahkan, views dapat secara fleksibel tertanam dalam views lain (dalam tampilan lain, dll., Dll.) Jika Anda membutuhkan jenis hierarki ini. "

Views dimuat dari dalam metode controller, dengan konten di dalam view selanjutnya ditampilkan di browser.


Cara Memuat view

Untuk memuat (dan menampilkan) view dalam CodeIgniter, kita menggunakan pustaka Loader bawaan.

Baris kode tunggal ini akan memberi tahu CodeIgniter untuk mencari hello_world.php di folder application/views, dan menampilkan konten file di browser.

Perhatikan bahwa CodeIgniter memungkinkan Anda untuk mengecualikan akhiran .php, menyimpan beberapa penekanan tombol saat mengetik nama view yang ingin Anda muat.

Parameter kedua, $data, adalah optional dan mengambil array atau objek asosiatif. Array/objek ini digunakan untuk meneruskan data ke file view, sehingga dapat digunakan atau direferensikan dalam view.

Parameter optional akhir menentukan apakah konten tampilan ditampilkan di jendela browser, atau dikembalikan sebagai string. Parameter ini default ke false, menampilkan konten di browser. Kita akan melihat nanti dalam tutorial bagaimana parameter ini dapat digunakan ketika membuat solusi templating.


Membuat dan Menampilkan View

Untuk mengatur view pertama kita, buat file baru bernama hello_world.php di application/views dan tulis HTML sederhana berikut ini di dalam:

Sekarang untuk menampilkan view ini di browser, itu harus dimuat dalam metode Controller, menggunakan metode yang disebutkan di atas.

Jadi mari kita buat file Controller baru bernama hello_world.php di application/controllers dan letakkan kode berikut di dalamnya. Dari dalam pengontrol ini, kita akan memuat tampilan yang baru dibuat.

Mengarahkan browser Anda ke http://your-ci-install.com/index.php/ sekarang akan menghasilkan HTML di application/views/hello_world.php yang dihasilkan di browser. Anda telah berhasil memuat view!

Memuat Banyak Views

Membagi view menjadi beberapa file membuat situs web Anda lebih mudah untuk mempertahankan dan mengurangi kemungkinan kode duplikat.

Menampilkan satu View semuanya baik dan bagus, tetapi Anda mungkin ingin membagi output menjadi beberapa file yang berbeda, seperti view header, content & footer.

Memuat beberapa view dicapai hanya dengan memanggil metode $this->load->view() beberapa kali. CodeIgniter kemudian menggabungkan konten view bersama sebelum ditampilkan di browser.

Buat file baru bernama header.php di application/views dan potong & rekatkan beberapa baris pertama dari file hello_world.php asli kita.

Demikian pula, buat file lain yang disebut footer.php di application/views dan pindahkan dua baris terakhir hello_world.php.

Ini meninggalkan file view hello_world.php hanya berisi konten halaman kita.

Sekarang untuk menampilkan halaman lagi, kita harus memuat ketiga view (heiewader.php, hello_world.php, footer.php), secara berurutan, di dalam controller.

Buka kembali application/controllers/hello_world.php dan tambahkan panggilan $this->load->view() di atas dan di bawah yang sudah ada.

Karena views header dan footer sekarang terpisah dari tampilan hello_world, itu berarti bahwa mereka dapat digunakan bersama dengan view lain di situs web. Ini berarti kode dalam file header & footer tidak perlu disalin ke view lain dalam proyek yang memerlukan kode ini.

Jelas ini adalah manfaat yang sangat besar karena setiap perubahan pada HTML atau konten dalam view, mis. Menambahkan stylesheet baru ke header, dapat dibuat hanya untuk satu file, dan tidak setiap file!


Menggunakan Data Dari Controller di View

Sekarang, kita akan melihat melewati data dari controllers, sehingga mereka dapat digunakan atau dikeluarkan di dalam view.

Untuk mencapai ini, kita akan melewatkan array asosiatif, $data sebagai parameter kedua dalam panggilan $this->load->view()

Nilai-nilai array ini akan dapat diakses dalam view yang dimuat sebagai variabel, dinamai dengan kunci masing-masing.

Kode di atas akan memberikan variabel $title nilai 'Hello World!' di dalam view hello_world.

Cara Menggunakan Variabel dalam Views

Setelah kita mengirimkan data ke file view, variabel dapat digunakan dengan cara biasa.

Biasanya, file view akan menggunakan data yang diteruskan ke:

  • Tampilkan nilai variabel
  • Loop melalui array atau properti objek
  • Gunakan pernyataan bersyarat untuk ditampilkan, atau sembunyikan markup

Saya akan menjalankan melalui contoh cepat tentang bagaimana melakukan masing-masing.

Untuk menampilkan konten variabel, gunakan pernyataan echo yang sederhana dan familier:

Looping melalui array, atau objek, adalah tugas umum dalam file view, dan dapat dicapai dengan loop foreach:

Pernyataan bersyarat sederhana dapat digunakan dalam file view untuk sedikit mengubah output, tergantung pada data yang dikirimkan.

Secara umum, Anda ingin menjaga penggunaan pernyataan bersyarat dalam tampilan seminimal mungkin, karena terlalu sering digunakan dapat menyebabkan file tampilan rumit, yang mengandung "logika bisnis". Memisahkan view menjadi file yang berbeda, dan memutuskan mana yang akan ditampilkan di controller, jauh lebih disukai.

Contoh di atas akan menampilkan pesan "Selamat Datang", atau permintaan pengguna untuk masuk, tergantung pada nilai $login_in (true/false).


Templating di CodeIgniter

Kita telah melihat bagaimana memisahkan view menjadi file yang terpisah dan lebih kecil dapat membantu mengatur dan mengurangi jumlah file dalam proyek CodeIgniter Anda, tetapi sekarang beberapa panggilan view pemuatan harus dibuat setiap instance halaman ditampilkan.

Mari kita asumsikan bahwa Anda memiliki view header dan footer yang terpisah, yang digunakan untuk membentuk templat. Setiap instance dalam proyek di mana Anda ingin memuat dan menampilkan halaman menggunakan template ini, tiga beban view harus dipanggil. Hal ini tidak hanya dapat mengacaukan controllers Anda, tetapi menghasilkan banyak kode berulang - persis hal yang kita ingin hilangkan dengan memisahkan file.

Jika Anda ingin menambahkan markup tambahan ke templat ini sekarang, misalnya menu bilah sisi. Itu bisa masuk dalam view header, tetapi lebih cocok untuk berada di kita yang terpisah. Menambahkan tampilan baru ini ke templat yang ada berarti menelusuri setiap instance view, dan menambahkan yang lain di. Ini bisa cepat berantakan.

Kita membutuhkan cara untuk dapat menyematkan file tampilan yang menampilkan konten halaman individual, di dalam template, tanpa kode berulang, dan yang memungkinkan modifikasi dibuat ke template dengan mudah, dan efisien.

Langkah-langkah berikut akan memandu Anda membuat perpustakaan CodeIgniter sederhana yang memenuhi kebutuhan ini, serta:

  • Menegakkan struktur direktori yang dapat diprediksi dan dipelihara untuk view Anda
  • Mengizinkan beberapa templat berbeda digunakan
  • Mengurangi memuat view halaman ke hanya satu baris kode

Setelah perpustakaan ditulis dan di sabuk tool CodeIgniter, kita akan dapat menampilkan view templated seperti:

Jauh lebih bagus!

Solusi templating kita akan menggunakan file kita yang berisi markup lengkap dari suatu template, dengan placeholder untuk file kita lain (dengan konten halaman) yang akan disematkan di dalamnya.

Placeholder sebenarnya hanya akan menjadi variabel bernama $body. Saat memuat view templat dengan perpustakaan kita, konten file view tubuh yang sesuai akan ditugaskan ke $body ini, menyematkan view dalam templat.


Langkah 1: Menyiapkan Direktori

Kita ingin menerapkan sistem direktori yang masuk akal dan dapat diprediksi untuk menampung file tampilan, sehingga view kita adalah:

  • Mudah ditemukan
  • Mudah untuk menentukan area aplikasi yang mereka miliki
  • Mudah dirawat

Sistem direktori kita juga akan memungkinkan perpustakaan untuk secara cerdik menentukan di mana mencari file view, mengurangi jumlah kode yang diperlukan untuk memuat view templated.

Buat folder baru di dalam direktori application/views dan beri nama templates. Folder ini akan menampung berbagai views templat.


Langkah 2: Membuat Perpustakaan

Libraries di CodeIgniter hanya kelas PHP dan dimuat ke Controllers seperti halnya view.

Perpustakaan khusus yang Anda gunakan dalam proyek CodeIgniter Anda disimpan dalam folder application/libraries. Untuk mulai menulis pustaka templating kita, buat file baru di folder ini bernama Template.php, dan tempatkan kode berikut di:

Kode di atas mendefinisikan kelas baru, atau pustaka, bernama Template dan metode __construct() di dalamnya.

Metode ini menetapkan objek super CodeIgniter ke variabel $ci class, memungkinkan semua sumber daya CodeIgniter digunakan dengan mengganti $this dengan $this->ci dalam pemanggilan metode yang biasa.

Ketika perpustakaan dimuat dalam framework CodeIgniter, metode __construct() secara otomatis dipanggil.

Menulis Metode Load

Sekarang kita akan menulis metode untuk benar-benar memuat view template. Kita ingin meneruskan hingga tiga parameter ke fungsi ini:

  • Nama templat
  • Nama tampilan tubuh (opsional)
  • Data yang akan diteruskan ke views (opsional)

Hasil dari metode ini dipanggil, akan menjadi view template yang ditampilkan di browser, dengan view body yang tertanam di dalamnya, jika ada yang disediakan.

Di bawah metode __construct(), tempatkan kode berikut:

Kode di atas dimulai dengan memeriksa apakah parameter $body_view disediakan untuk metode ini. Variabel ini akan menyimpan nama view yang akan digunakan sebagai badan dalam view template.

Jika parameter diberikan, serangkaian pemeriksaan file_exists dibuat untuk mencoba dan menemukan file view dalam sistem direktori.

Kode pertama kali mencoba menemukan file view di dalam folder dengan nama yang sama dengan template di folder application/views.

Ini berguna jika bagian dari proyek Anda secara drastis berbeda dari yang lain, dan menggunakan templat yang berbeda. Dalam keadaan ini, masuk akal untuk mengelompokkan file-file view ini bersama-sama.

Misalnya, banyak situs web menampilkan templat yang berbeda untuk bagian yang berbeda, seperti blog. Dalam sistem, file view blog dapat ditempatkan di dalam folder application/views/blog, memisahkannya dari view situs utama.

Jika file view tidak dapat ditemukan di folder ini, .php ditambahkan ke akhir nama file, dan pemeriksaan dilakukan lagi. Sederhananya .php dapat dikecualikan seperti panggilan $this->load->view() call. asli.

Jika file masih tidak dapat ditemukan, pemeriksaan lebih lanjut untuk lokasi itu dilakukan.

Kali ini, kode akan memeriksa apakah file view terletak di dalam folder application/views, dan sekali lagi, jika tidak dapat ditemukan, menambahkan .php dan memeriksa sekali lagi.

Jika file tersebut terletak di salah satu tempat ini, path ditugaskan ke $body_view_path, jika tidak pesan kesalahan dilemparkan menggunakan fungsi show_error() yang dibangun ke dalam CodeIgniter, dan skrip diakhiri.

Jika file view tubuh berhasil ditemukan, konten ditetapkan ke variabel $body.

Kita meneruskan parameter $data (nol jika tidak disertakan) ke panggilan pemanggilan view, dan mengatur parameter ketiga ke true untuk mengembalikan output view sebagai string.

Kita sekarang menambahkan variabel $body ini ke daftar data dalam $data sehingga ia dapat disematkan dalam tampilan templat ketika dimuat.

Jika $data tidak disediakan untuk panggilan load(), $data ditugaskan ke array yang berisi $body di bawah body kunci. Jika parameter diberikan, $body ditambahkan ke daftar dengan menugaskannya ke kunci array, atau properti objek, keduanya juga bernama body.

Variabel $body sekarang dapat digunakan dalam file tampilan templat sebagai pengganti untuk view tersemat.

Baris terakhir dari metode memuat file view templat dari folder application/views/templates, dan meneruskan variabel $data dalam parameter kedua.

Dan itu dia! Perpustakaan sekarang dapat digunakan.


Menggunakan Perpustakaan

Untuk mulai menggunakan perpustakaan, mari kita buat view templat, bernama default.php di application/views/templates, dan tempatkan HTML/PHP berikut ini di dalam:

Dalam templat ini, kita mereferensikan dua variabel, $title dan $body.

Ingatlah bahwa dalam file templat, $body berfungsi sebagai pengganti untuk view tersemat.

Kita sekarang akan membuat view lain untuk disematkan di dalam template ini. Buat file baru bernama content.php di application/views/ dan tempatkan HTML sederhana ini di dalam:

Kita sekarang siap untuk memuat view halaman templat dari dalam controller.

Di dalam metode controller apa pun, tempatkan kode berikut untuk menampilkan view content, dalam templat default.

Catatan: perpustakaan harus dimuat sebelum Anda dapat memanggil metode load. Untuk menghemat pemuatan perpustakaan setiap kali view templat perlu ditampilkan,
autoload kelas dengan menambahkannya ke array perpustakaan di application/config/autoload.php.

Jika alih-alih file view, Anda ingin string untuk disematkan dalam templat, cukup tetapkan string ke $data array menggunakan body kunci, dan berikan null sebagai parameter kedua dalam panggilan pemuatan.


Tips Cepat

Saya telah menemukan bahwa pengelompokan file tampilan di folder oleh controller, dan bahkan metode, milik mereka, sangat membantu menjaga pandangan saya terorganisir & mudah ditemukan.

Mengatur pandangan Anda dengan cara ini menghasilkan struktur direktori yang mengikuti skema URL controller/metode.

Misalnya, proyek Anda memiliki pengontrol bernama Members, yang berisi list metode.

Lokasi yang sesuai untuk file view list adalah di application/views/members, atau application/views/members/list, jika metode ini memuat banyak view.

View ini kemudian dapat disematkan ke templat menggunakan perpustakaan kita dengan kode berikut:


Kesimpulan

Solusi templating yang dibahas dalam tutorial ini hanyalah salah satu dari banyak cara berbeda untuk mencapai templating di CodeIgniter.

Mudah-mudahan Anda sekarang harus tahu apa pandangan itu, dan bagaimana menggunakannya secara efektif - dan efisien - dalam proyek CodeIgniter Anda.

Solusi templating yang dibahas dalam tutorial ini hanyalah salah satu dari banyak cara berbeda untuk mencapai templating di CodeIgniter. Ada sejumlah pendekatan berbeda, dan saya mendorong Anda, pembaca, untuk meneliti metode lain dan menentukan mana yang paling cocok untuk proyek Anda.

Jika Anda memiliki komentar atau pertanyaan tentang tutorial, atau wawasan tentang solusi templating yang berbeda, silakan tinggalkan komentar di bawah ini! Terima kasih sudah membaca.

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Scroll to top
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.