CodeIgniter ile site arama?

4 Cevap php

Ben de pagination ile basit bir site arama yapmak gerekiyor; Herkes nasıl URL yapısını etkilemeden bunu bana söyleyebilir misiniz? Şu anda varsayılan CodeIgniter URL yapısını kullanarak ve ben index.php ondan kaldırdık. Herhangi bir öneriniz?

4 Cevap

Sadece /search/search_term/page_number gibi bir url kullanabilirsiniz.

Bu gibi rota ayarlayın:

$route['search/:any'] = "search/index";

Ve bu gibi kontrolör:

function index()
{
    $search_term = $this->uri->rsegment(3);

    $page = ( ! $this->uri->rsegment(4)) ? 1 : $this->uri->rsegment(4);

    // some VALIDATION and then do your search
}

Sadece bu soruyu güncellemek için. Aşağıdaki işlevi kullanmak için muhtemelen en iyisidir:

$uri = $this->uri->uri_to_assoc()

ve sonuç, daha sonra şöyle bir ilişkisel dizi içine her şeyi koymak olacaktır:

[array]
(
    'name' => 'joe'
    'location'  => 'UK'
    'gender'    => 'male'
)

URI Class at CodeIgniter.com hakkında daha fazlasını okuyun

Oldukça Eğer "url yapısını etkileyen" demek ne anlamıyorum. Eğer sayfalama tüm değiştirmeden URL olmadan meydana istersin demek?

URL tek değişiklik ucunda bir numara olacağını böylece CI standart sayfalama sınıfı kurulum sayfalandırmaya sağlayacak

örneğin bir sayfaya 5 sonuç olsaydı sizin adresler olabilir

http://www.example.com/searchresults

ve sonra sayfa 2 olacak

http://www.example.com/searchresults/5

ve sayfa 3 olacaktır

http://www.example.com/searchresults/10

ve benzerleri.

Eğer URL herhangi bir değişiklik olmadan bunu yapmak istiyorsa o zaman sanırım ajax kullanmak.

Kod Ateşleyici varsayılan sorguları GET devre dışı bırakır, ancak url arama dizesini göstermek istiyorsanız bir alternative inşa edebilirsiniz.

Your url can be in the notation www.yoursite.com/index.php/class/function/request1:value1/request2:value2

$request = getRequests();
echo $request['request1'];
echo $request['request2'];

function getRequests() 
{ 
    //get the default object 
    $CI =& get_instance(); 
    //declare an array of request and add add basic page info 
    $requestArray = array(); 
    $requests = $CI->uri->segment_array();
    foreach ($requests as $request)
    { 
        $pos = strrpos($request, ':');
        if($pos >0)
        {
            list($key,$value)=explode(':', $request);
            if(!empty($value) || $value='') $requestArray[$key]=$value;
        }
    }
    return $requestArray ; 
} 

Kaynak: http://codeigniter.com/wiki/alternative_to_GET/