Ben masa CodeIgniter'ı kullanarak sıralama nasıl yapabilirim?

6 Cevap php

Ben çerçeve olarak CodeIgniter'ı kullanarak son birkaç hafta içinde bir site gelişmekte oldum. Sıralanabilir tablolar: Ben Diğer dillerde diğer çerçeveler bir sürü nispeten basit bir şey, başarmak için en iyi yol düşünüyordum. Lütfen URL'ler yöntem parametreleri içerdiğinden CodeIgniter sorgu dizeleri kapanır. Yani bir URL gibi görünebilir:

/controller/method/param1/param2

Sen sadece denetleyici yöntem için iki ek parametre olarak sortBy ve sortOrder eklemek diye düşünebilirsiniz. Ben özellikle bir yeniden kullanılabilir denetleyicisi olmasını istiyorum başlıca nedeni, bunu yapmak istemiyorum. Sorgu dizesi parametrelerini kullandığınızda, PHP kolaylıkla sortBy adında bir parametre olup olmadığını söyleyebilirim. URL tabanlı parametreleri kullanarak olduğunuzda Ancak, her bir kontrolör ile değişecektir.

Benim seçenekleri merak ediyordum. Bildiğim kadarıyla ben gördüğünüz gibi onlar gibi bir şey vardır:

  • Benim sortBy geçmek ve sortOrder parametreleri, sadece o kadar emmek, ve bunun için biraz daha az-daha-yeniden bileşen geliştirmek.
  • (Bunu nereden geldiğini bilmek zorunda olsa da, ve orijinal sayfaya geri göndermek) oturumda sortBy ve sortOrder saklayacak bir ek denetleyicisi var.
  • Yukarıdaki denetleyici çağırır AJAX fonksiyonu çeşit var; Daha sonra sayfayı yeniden yükleyin.
  • Geri sorgu dizeleri açmak için CodeIgniter'ı Hack. Bu tek seçenek ise, aslında, bunu nasıl takdir bağlantıları olacaktır.

Ben sadece çok böyle basit bir görev, böyle bir sorun mevcut inanamıyorum! Ben bir şey eksik? Herkes herhangi bir önerileri var mı?


Açıklama için düzenleyin: jQuery seviyorum ve tablesorter iyi bir seçenek olduğunu bu yüzden zaten, sitede kullanıyorum. Pagination dahil sonuçların potansiyel olarak büyük sayılar, bazı sayfaları olduğu gibi Ancak, sunucu tarafı sıralama yapmak istiyorum.

6 Cevap

I have been using this method: http://codeigniter.com/forums/viewthread/45709/#217816

Ben de birisi geri geldiğinde bu yüzden tablo daha önce olduğu gibi aynı sıralanır tür kapalı tabanlı çerezleri ayarlamak için genişletti.

Eğer istemci tarafında sıralama ile OK iseniz, the Tablesorter plugin for jQuery oldukça güzel.

Ben oldukça karmaşık bir tablo ile bu koştu. Zor kısmı tablo bazı değişkenlere bağlı / psikiyatriste büyümek olabilir oldu! Büyük bir acı: (

İşte ben bunu ele nasıl ..

URI virgül karakteri izin Düzeltilmiş sistem / application / config / config.php:

$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-,';

Bir sıralama işlevi ile benim denetleyicisi ayarlayın:

function sorter() {
  //get the sort params
  $sort = explode(",",$this->uri->segment(3)); //the 3rd segment is the column/order
  //pass the params to the model
  $data = $this->model_name->get_the_data($sort[0],$sort[1]);
  $this->_show($data);
}
function _show($data) {
  //all the code for displaying your table
}

Ben basitleştirdim, ama fikir olsun. Amaç bu gibi bir url sahip olmaktır:

/ Denetleyici / sıralayıcı / columnname, sortorder

Sıralayıcı fonksiyon göstergesi / şablon / görünüm mantığı ile başa çıkmak için başka bir iç işlevini çağırır - bu işi sıralama çağrısı ile anlaşma ve model uygun veri elde etmektir.

Tabii ki, bu sadece geçerli işlevi azaltılmış olabilir:

function showGrid() {
  $sort = $this->uri->segment(3);
  if ($sort) {
    //get the data sorted
  } else {
    //get the data the default way
  }
  //rest of your view logic
}

Bu şekilde, hatta ayrı bir işlevi gerekmez - ve sıralamayı tanımlamak için üçüncü bölümünü kullanabilirsiniz.

Geçenlerde benim sayfaları bir demet bu Table sorter (Prototype kullanır) eklenmiştir. Bu hızlı ve uygulamak oldukça kolay.

Ben bu kullanıyorum: http://net.tutsplus.com/tutorials/php/codeigniter-from-scratch-displaying-sorting-tabular-data/

net.tutsplus.com dan

Ben sayfalamayı gerektiğinde ne yazık ki her denetleyicisi için (ekran fonksiyonu) Eğer (/ controller/method/param1/param2) sevmiyorum ne kullanıyor ama ben bu ekledi. Ya da ondan bir yardımcı olun.

Diğer bir örnek burada: http://www.robertmullaney.com/2010/09/19/tablerecord-sorting-made-easier-for-codeigniter/

Ben bu sorunu vardı hem sorgu dizeleri bir segmentleri destek verebilecek, böylece ben şahsen CI güncellenmiştir. O (benim önerim rağmen) varsayılan olarak bunu yapmaz neden anlamıyorum ama bu onların seçimi.

Alternatif onların ilişkisel URL'ler özelliği ... sen arıyor ama onlara başvurmak için dizinleri kullanarak daha iyi bir konum tam olarak ne olduğu kullanmaktır. Ben belgelere bağlamak istiyorum ama kendi sunucusu aşağı gibi görünüyor.