Simfony: Membuat halaman pertama anda

Artikel ini sebenarnya menyalin dari dokumentasi Symfony (https://symfony.com) , bagaimana membuat halaman pertama pada symfony  framework ini. Ada 2 langkah yang harus kita buat .

  • Membuat ‘rute’ : Rute adalah URL (misal: / about) ke halaman anda dan menunjuk ke controller.
  • Membuat ‘controller’ : Controller adalah fungsi PHP yang anda tulis yang membangun halaman. Anda mengambil informasi permintaan masuk dan menggunakannya untuk membuat objek Respons Symfony, yang dapat menampung konten HTML, string JSON atau bahkan file biner seperti gambar atau PDF.

Sekarang buat sebuah file  ‘Controller’ pada folder : mysymfony1/src/AppBundle/Controller/  dengan nama file LuckyController.php , ingat ya pada saat install saya menamai folder proyeknya : mysymfony1  (anda sesuaikan sendiri).

<?php
// src/AppBundle/Controller/LuckyController.php
namespace AppBundle\Controller;</code>

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Component\HttpFoundation\Response;

class LuckyController
{
/**
* @Route("/lucky/number")
*/

public function numberAction()
{
   $number = mt_rand(0, 100);

   return new Response(
      'Lucky number: '.$number.''
    );

}
}

Jalankan servernya  dan lihat pada browser anda.

http://localhost:8000/app_dev.php/lucky/number

Notes : Kalau di jalankan di web server : bisa dihilangkan  app_dev.php

Screenshot from 2017-06-30 10:59:49
Menjalankan PHP Server

Hasilnya.

symony2-02

Bagaimana agar bisa di tampilkan (views) menggunakan templates?

Symfony sudah menyediakan ‘twig templates’ untuk  membantu kita membuat web templates pada symfony. Kita hanya sedikit merubah ‘kode’ tadi dan penambahan file views  templates-nya.

Buatlah kode controller tadi seperti ini :

<?php
// src/AppBundle/Controller/LuckyController.php
namespace AppBundle\Controller;

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Component\HttpFoundation\Response;
//penambahan baris baru ini
use Symfony\Bundle\FrameworkBundle\Controller\Controller;

class LuckyController extends Controller
{
    /**
     * @Route("/lucky/number")
     */

    public function numberAction()
    {
        $number = mt_rand(0, 100);

        //penambahan fungsi $this->render
        return $this->render('lucky/number.html.twig', array(
            'number' => $number,
        ));
    }
}

Satu lagi siapkan templates-nya, untuk file templates kita simpan pada folder app/Resources/views/lucky   => buat sendiri folder lucky. Beri nama filenya : number.html.twig

{# app/Resources/views/lucky/number.html.twig #}
<h1>Your lucky number is {{ number }}</h1>

Jalankan di browser, hasilnya :

Screenshot from 2017-07-01 06:23:32
Hasil  tampilan di views templates

Berhasil.

Mohon maaf kalau artikelnya agak kaku atau mungkin ada yang kelewat, maklum saja sambil nulis sambil baca dokumentasi dan langsung mempraktekannya.

Catatan tambahan dari dokumentasi :

Memeriksa Struktur Proyek¶

Kabar baik! Anda telah bekerja di dalam dua direktori terpenting dalam proyek Anda:

  • app/
    Berisi hal-hal seperti konfigurasi dan template. Pada dasarnya, apapun yang bukan kode PHP ada disini.
  • src /
    Kode PHP anda tinggal disini
    99% dari waktu, Anda akan bekerja di src / (file PHP) atau aplikasi / (yang lainnya). Saat Anda terus membaca, Anda akan belajar apa yang bisa dilakukan di dalam masing-masing.

Lalu bagaimana dengan direktori lain dalam proyek ini?

  • bin/
    File bin / console yang terkenal tinggal di sini (dan file executable lainnya yang kurang penting).
  • tests /
    Tes otomatis (misalnya tes Unit) untuk aplikasi Anda tinggal di sini.
  • var /
    Di sinilah file yang dibuat secara otomatis disimpan, seperti file cache (var / cache /), log (var / logs /) dan sesi (var / sessions /).
  • vendor/
    Pustaka pihak ketiga (yaitu “vendor”) tinggal di sini! Ini didownload melalui manajer paket Composer.
  • web/
    Ini adalah akar dokumen untuk proyek Anda: letakkan file yang dapat diakses publik di sini (misalnya CSS, JS dan gambar).

Salam

[TUTORIAL] Membuat CMS Company Profile dengan Panada Framework–Bag.10

Memadukan file uppload manager KCFINDER dengan editor TINYMCE

Sudah lama juga saya belum update tutorial tentang panada framework ini, dan setelah membaca bagian terakhir (bagian 9) ternyata ada janji yang belum saya tepati, yaitu bagaimana memadukan file manager dan upload kcfinder dengan tinymce editor yang sudah terpasang pada CMS yang kita buat. Pada saat klik ikon image akan tampil insert/eit image dan di samping baris ‘source’ tidak ada folder untuk ‘browse file’.

tinymce-tanpa-kcfinder
Gb. 10.1 | TinyMCE tanpa KCFinder

Kenapa memilih KCFINDER ? Lanjutkan membaca “[TUTORIAL] Membuat CMS Company Profile dengan Panada Framework–Bag.10”

[TUTORIAL] Membuat CMS Company Profile dengan Panada Framework – Bag.6

Harap diperhatikan ‘code’ yang ada di tiap artikel dikarenakan pada saat simpan artikel selalu ada perubahan. Misalnya seharusnya <?php  menjadi <!–?php  , atau seperti ini $page->id  terlihat menjadi  ->id ;  😦

Tak terasa kita sudah sampai ke bagian 6, pada bagian ke-5 kita sudah membahas cara membuat form login dan penggunaan session untuk mengecek hak akses seseorang untuk masuk ke dashboard admin, ketika login sukses (username dan password sudah benar) sistem akan membuat session dan masuk ke dashboard admin , kalau masih salah harus login kembali. Jadi yang membedakan bagian depan (homepage) dan dashboard admin hanyalah pada proses pengecekan session ini. Apakah ada session login ataukah belum ada session. Untuk itu di setiap methods pada controller yang hanya bisa di akses oleh orang yang berhak, dilakukan terlebih dulu pengecekan session login ini. Kalau session login sudah ada proses di lanjutkan, jika belum ada beritahu untuk login lagi.

Lihat skrip di bawah ini ;

public function index(){
        $ceklogin=$this->session->getValue('logadmin'); //cek dulu ya sudah login belum?
        if($ceklogin){	 //kalau sudah login sih masuk aja ke dashboard

           $this->output('dash/dashboard');  //halaman dashboard admin
        }else{	     //kalau belum login, maaf ya login dulu di from.
           $this->output('dash/index');	  //halaman login admin
        }
    }

Dimana bagian mengeset session-nya? lihat lagi bagian method login pada contoller Boardadmin, ada skrip seperti ini ;

                 $this->session->setValue(
                       array(
                            'logadmin' => true,
                            'username' => $hslcek->username
                            )
                  );

Untuk lebih jelasnya silahkan buka lagi dokumentasi panada bagian session.

Lanjutkan membaca “[TUTORIAL] Membuat CMS Company Profile dengan Panada Framework – Bag.6”

[TUTORIAL] Membuat CMS Company Profile dengan Panada Framework – Bag.5

Bagaimana khabarnya hari ini? masih semangat mengikuti tutorial berseri panada framework? setelah episode yang lalu kita belajar cara menyambungkan sistem cms yang kita buat dengan database MySQL.

Belajar cara sebuah ‘models’ mengambil data dari tabel database yang dipanggil dari ‘controllers’ dan menampilkannya pada ‘views’.

Belajar cara menggunakan query panada yang ‘natural (manual query)’ atau yang sudah di buat susah untuk di ingat (maaf! query builder)… :), semua bisa anda gunakan di panada ini. Lihat saja pada dokumentasinya. Ciyus! Enelan! 😀

Jika anda dapat mengikuti tutorial ini dari awal, langkah demi langkah membuat sebuah ‘free webtemplate css’ bisa menjadi tema pada cms kita. Dan anda berhasil mengikuti tutorial dari pertama sampai bagian ke empat, saya yakin anda pun sudah bisa membuat tema baru. Bahkan saya tantang anda untuk bisa membuatnya. Gampangkan?

Tinggal kita buat folder tema baru, misal nama temanya : karyaku ,sehingga pada folder /app/views/tema/ menjadi ada dua tema, yaitu tema default /app/views/tema/default dan /app/views/tema/karyaku/ . Mudahkan?

Baiklah kalau anda sudah bisa membuat tema baru, setelah tutorial ke-5 ini kita akan membahas tentang bagaimana mengganti tema, dan sedikit tip-triksnya. Tentu saja tip triks dari saya sendiri. Entah nanti akan di bahas di bagian tutorial ke 6 atau terakhir (yang tidak tahu kapan akhirnya). Setelah bagian kelima ini kita akan membuat tutorial sesuai permintaan, apabila tidak ada permintaan mana yang ingin di dahulukan, berarti kita akan membuat tutorial sesuai dengan rencana yang ada di otak saya (kalau rencana di otak saya habis…ya tamat deh). 😀

Baiklah kita sudahi saja kata pengantar pada tutorial ke lima ini, saatnya kita kembali ke topik bagian ke lima ini, yaitu bagaimana langkah membuat dashboard admin? Apa saja yang akan kita bahas pada episode ke lima ini, kita lanjutkan:

Lanjutkan membaca “[TUTORIAL] Membuat CMS Company Profile dengan Panada Framework – Bag.5”

Masalah .htaccess di server web hosting

Artikel ini hanya sebagai pengingat saja. Pernahkah anda mendapat masalah dengan script php anda saat menggunakan rewrite-module dan setting .htaccess tidak berjalan sebagaimana mestinya?

Dulu saya pernah bermasalah dengan .htaccess ini saat belajar dengan PHP Framework, script sudah di setting di localhost dan berjalan dengan baik setelah menggunakan .htaccess , tetapi ternyata saat mencoba di upload di web sharehosting (tidak semua web server) dan coba di akses langsung saja ada error :

Internal Server Error

Dan saat ini saya mencoba mengupload script yg berbasis Panada Framework dan hasilnya setelah .htaccess di aktifkan terjadilah Internal Server Error.  😦 

Terjadi kesalahan ini saat saya mengakses web dengan URL :

http://solusiwebpro.biz/home/test     => hasilnya => Internal Server Error   (ada .htaccess)

Tetapi saat mencoba mengakses seolah tidak ada .htaccess ini :

http://solusiwebpro.biz/index.php/home/test     => hasilnya => Tampilah kata Hallo  sesuai dengan yg sudah saya buat.

akhirnya saya menyimpulkan :

Pasti ada masalah dengan file .htaccess ini (seperti kasus yg pernah saya temui dulu), yg isinya hanyalah seperti ini :

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

* Intinya dari script ini agar kita bisa mengakses web tanpa harus mengetikan “index.php” yg biasanya sering kita jumpai pada web yg di buat dengan PHP Framework.

Setelah searching di google dan mencoba kirim tiket support ke pengelola server hosting, akhirnya mendapatkan solusinya, sederhana saja ternyata hanya menambahkan satu baris saja sehingga menjadi seperti ini :

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

Dan…. Alhamdulilla masalah selesai.

* Kasus ini terjadi tidak pada semua server hosting, karena masing-masing hosting mempunyai settingan tersendiri. 

*Aplikasi web berada pada folder root  dari user di hostingnya, ( /username/www/).


error certificate recaptcha : reCaptcha tidak tampil lagi?

Sudah 2 Minggu ini saya di buat pusing tujuh keliling dengan yang namanya recaptcha nih, soalnya tiba-tiba image recaptcha tidak tampil sama sekali dan tidak ada pemberitahuan kesalahan yang tampil, mulanya sih dari di browser firefox masih bisa muncul, walaupun pada beberapa pengunjung kadang tidak tampil sama sekali. Setelah saya cek lagi ternyata di browser firefox dan google chrome yang saya pake juga tidak muncul.

recaptcha tidak tampil

Yang terpikirkan saat itu apakah mungkin karena pubkey dan privatekey nya yang salah, sehingga saya beberapa kali membuat pubkey dan privatekeynya…. tetap saja tidak mau tampil.

Sampai akhirnya memutuskan untuk mengganti code recaptcha dari google dengan captcha class yang lebih sederhana saja, bukannya menyelesaikan masalah malah menambah masalah soalnya captcha class tidak bisa berjalan dengan PHP framework yang saya pakai.

Alhamdulillah pagi ini saya mendapatkan solusinya, karena pada browser Opera , recaptcha bisa tampil apabila saya menyetujui “error cetificate recaptcha” nya. Dengan bantuan google langsung saja saya ketikan kata kunci “cetificate recaptcha” , dan hasilnya menemukan ini :

Ternyata semenjak April 2011, ada perubahan certificate recapthca ini –dan pada saat inilah image capthca kadang muncul kadang tidak—. Akhirnya setelah mengedit sedikit code-nya pada library recaptcha sesuai dengan instruksi di atas bagian :

https://api-secure.recaptcha.net

menjadi:

https://www.google.com/recaptcha/api

Dan hasilnya, permasalahan sudah teratasi….

recaptcha

Lanjut deh ke pekerjaan berikutnya….