Nasıl bir CakePHP iskele bir listesini almak için bir joker arama kullanabilirsiniz?

2 Cevap php

CakePHP için yapılmış bir iskele var, ancak kullanıcılar, bir metin kutusuna bir soyadı kısmını yazın bir düğmesini tıklatın ve bir joker arama filtre edilecek kişilerin listesi için için bir yol olması gerekir ettik.

Ben örnek kod için mücadele ediyorum. Herkes bazı var mı?

2 Cevap

views / users / index.ctp

<fieldset>
    <legend>Filter users</legend>
    <?php
        echo $form->create('User', array('action' => 'index'));
        echo $form->input('surname', array('div' => false));
        echo $form->submit('Filter', array('div' => false));
        echo $form->end();
    ?>
</fieldset>

kontrolörleri / users_controller.php

public function index($surname = null) {
    // post-redirect-get 
    if ($this->data['User']['surname']) {
       $this->redirect(array('id' => $this->data['User']['surname']));
    }
    // conditions
    $conditions = null;
    if ($surname) {
        $conditions = array('surname LIKE' => '%' . $surname . '%');
    }
    // find
    $users = $this->Users->find('all', array('conditions' => $conditions));
    // set
    $this->set(compact('users'));
}

Sen CakePHP sağlayan findby yöntemlere bakmak gerekir.

standart FindAll ek olarak () size göre aramak için tablodaki bir sütun belirtmek için izin "sihirli" findby yöntemleri bir dizi var:

$this->User->findBySurname($surname);

Ayrıca sizin için sağlar findBySql (deyim) özel bir SQL deyimi kullanmak zorunda. Aşağıdaki gibi bir LIKE deyimini yürütmek için kullanabilirsiniz:

$users = $this->User->findBySql("SELECT * FROM USERS u WHERE u.SURNAME LIKE '%" . $surname . "%' ORDERBY SURNAME");

İşte size o kullanıcıya görüntüleyebilirsiniz eşleşen kullanıcıların bir listesini döndürecektir. Bu en verimli sorgu değil, ama işe yarıyor.