Tutorial CRUD dengan Phalcon framework Part 5 ,Pencarian data dengan phalcon framework.


Baiklah setelah sebelumnya membahas mengenai hapus data pada tutorial crud dengan phalcon part 4 . Sekarang saya akan membahas cara mengenai pencarian data dengan phalcon framework.



Telah saya beritahu sebelumnya bahwa saya  memberikan toturial yang dibagi dalam 5 bagian yaitu :

Part 1 : Insert data /Input Data dengan phalcon framework
Part 2 : Menampilkan data dengan phalcon framework
Part 3 : Update data/edit data dengan phalcon framework
Part 4 : Delete data / hapus data dengan phalcon framework
Part 5 : Pencarian dengan phalcon framework

Konsep dari pencarian data pada tutorial ini adalah :

1. data akan ditampilkan terlebih dahulu dalam view
2. Terdapat form pencarian pada view
3. User akan menginputkan keyword pada textbox
4. Form akan mengirim keyword tsb pada controller
5. Controller akan memfilter keyword tersebut dan akan memparsing hasil filter tersebut pada View

Baiklah langsung saja kita buka file viewData.volt pada folder views/user. lalu kita akan tambahkan form pencarian.     

viewData.volt :
<center>
  {{ form('user/cari', 'role': 'form') }}
   <input type="text" name="nama_user" placeholder="cari nama">
   <input type="submit" value="cari">
  </form>
</center>
{% for datas in data %}
{% if loop.first %}
<table border=1 align="center">
    <thead>
        <tr>
            <th>Id</th>
            <th>Name</th>
            <th>Email</th>
            <th colspan=2>Action</th>
        </tr>
    </thead>
{% endif %}
    <tbody>
        <tr>
            <td>{{ datas.id_user }}</td>
            <td>{{ datas.nama_user }}</td>
            <td>{{ datas.email_user }}</td>
   <td> <a href="{{ url('user/edit/' ~ datas.id_user) }}">Edit</a> </td>
   <td> <a href="{{ url('user/hapus/' ~ datas.id_user) }}" onclick="return confirm('Apakah anda akan menghapus data ? ');">Hapus</a> </td>
        </tr>
    </tbody>
{% if loop.last %}
    </table>
{% endif %}
{% else %}
    No data
{% endfor %}

Buka browser anda dan buka http://localhost/phalcon_project/User/viewData pada url , maka tampilanya adalah sbb :
Setelah berhasil selanjutnya kita tambahkan method cariAction untuk mencari data pada UserController.php seperti dibawah ini :
public function cariAction()
 {
  if ($this->request->isPost()) {
   $query = Criteria::fromInput($this->di, "User", $this->request->getPost());
   $this->persistent->searchParams = $query->getParams();
  } 

  $parameters = array();
  if ($this->persistent->searchParams) {
   $parameters = $this->persistent->searchParams;
  }

  $user = User::find($parameters);
  $this->view->datacari=$user;
 }

Setelah itu tambahkan juga script :
use Phalcon\Mvc\Model\Criteria;

pada baris paling atas setelah <?php.
Mengapa demikian ? inilah phalcon kita "hanya menggunakan sesuatu yg digunakan " dan phalcon tidak mebaca semua library , phalcon membuat kita untuk menggunakan library yang digunakan saja sehingga inilah yang membuat phalcon sangat ringan dibanding dengan framework lainya.


Penjelasan Script :
$query = Criteria::fromInput($this->di, "User", $this->request->getPost());
Script diatas berfungsi untuk melakukan pencarian data dari form yang dikirim dari view sebagai catatan bahwa name dari textbox harus sama dengan field yg akan dicari. Dalam kasus ini name pada textbox yaitu "nama_user" sehingga saat pencarian yang akan dicari itu adalah field "nama_user".


Berikut merupakan script lengkap dari UserController.php.
UserController.php :
<?php
use Phalcon\Mvc\Model\Criteria;

class UserController extends ControllerBase
{

    public function indexAction()
    {
  
    }
 
 public function createAction()
   {
  $user = new User();
  $user->nama_user = $this->request->getPost("txt_nama");
  $user->email_user = $this->request->getPost("txt_email");
  
  if (!$user->save()) {
   echo "Gagal Disimpan";
  }
  else
  {
   echo "Data Berhasil Disimpan";
  }
  
   }
   
 public function viewDataAction()
    {
  $user = User::find();
  $this->view->data=$user;
    }
 
 public function editAction($id)
 {
  $user = User::findFirstByidUser($id);
  $this->view->id = $user->id_user;
  $this->view->email = $user->email_user;
  $this->view->nama = $user->nama_user;
 }
 
 public function updateAction()
 {
  $id = $this->request->getPost("txt_id");
  $user = User::findFirstByidUser($id);
  $user->nama_user = $this->request->getPost("txt_nama");
  $user->email_user = $this->request->getPost("txt_email");
  if (!$user->save()) {
   echo "Gagal Disimpan";
  }
  else
  {
   echo "Data Berhasil Diupdate";
  }
  
  
 }
 
 public function hapusAction($id)
 {
  $user = User::findFirstByidUser($id);
  
  if (!$user->delete()) {
   echo "Gagal Hapus Data";
  }
  else
  {
   echo "Berhasil Hapus Data";
  }
 }
 
 public function cariAction()
 {
  if ($this->request->isPost()) {
   $query = Criteria::fromInput($this->di, "User", $this->request->getPost());
   $this->persistent->searchParams = $query->getParams();
  } 

  $parameters = array();
  if ($this->persistent->searchParams) {
   $parameters = $this->persistent->searchParams;
  }

  $user = User::find($parameters);
  $this->view->datacari=$user;
 }
 
}



Setelah kita menambahkan method pencarian , sekarang kita akan membuat view sesuai dengan nama method yang kita buat yaitu cari.volt pada folder views/user.

cari.volt :
<center>
  Hasil Cari
</center>
{% for datas in datacari %}
{% if loop.first %}
<table border=1 align="center">
    <thead>
        <tr>
            <th>Id</th>
            <th>Name</th>
            <th>Email</th>
            <th colspan=2>Action</th>
        </tr>
    </thead>
{% endif %}
    <tbody>
        <tr>
            <td>{{ datas.id_user }}</td>
            <td>{{ datas.nama_user }}</td>
            <td>{{ datas.email_user }}</td>
   <td> <a href="{{ url('user/edit/' ~ datas.id_user) }}">Edit</a> </td>
   <td> <a href="{{ url('user/hapus/' ~ datas.id_user) }}" onclick="return confirm('Apakah anda akan menghapus data ? ');">Hapus</a> </td>
        </tr>
    </tbody>
{% if loop.last %}
    </table>
{% endif %}
{% else %}
    No data
{% endfor %}
 

Selanjutnya kita  buka browser dan masukan url
http://localhost/phalcon_project/User/viewData , lalu coba lakukan pencarian data , sehingga akan seperi berikut :

Oke baiklah akhirnya tutrial mengenai pencarian data dengan phalcon framewok sudah selesai dan berhasil . Artinya cruds dengan phalcon sudah selesai kita lakukan semuanya . :D

Congrats you're flying with phalcon !!!

Silahkan download file lengkap nya  dari part1 s/d 5 :
Flying

Download database :
download database

Posting Komentar

2 Komentar

  1. thanks gan.
    tutorial 1 s/d sudah ane coba. dan semua work.
    nulis terus gan.

    BalasHapus
  2. terima kasih sangat membantu kawan :)

    BalasHapus