Setelah menentang hal ini selama satu setengah hari, dan melakukan yang terbaik untuk mencari cara yang tepat untuk melakukan hal ini dengan cukup sederhana, saya menyerah dan melakukan hal berikut. Saya masih tidak percaya tidak ada cara yang lebih baik.
Kasus penggunaan yang memerlukan ini adalah daftar catatan sederhana, dengan formulir di bagian atas untuk menambahkan beberapa filter (melalui GET), mungkin beberapa pengurutan kolom, dan Zend_Paginate dimasukkan untuk pengukuran yang baik. Saya mengalami masalah saat menggunakan pembantu tampilan Url di sebagian penomoran halaman saya, tetapi saya curiga bahkan hanya dengan penyortiran dan formulir filter, Zend_View_Helper_Url masih akan gagal.
Tapi saya ngelantur. Solusi saya adalah menambahkan metode ke kelas pengontrol dasar saya yang menggabungkan parameter string kueri mentah apa pun dengan params garis miring gaya zend yang ada, dan mengalihkan (tetapi hanya jika perlu). Metode ini dapat dipanggil dalam tindakan apa pun yang tidak harus menangani POST.
Semoga seseorang akan menemukan ini berguna. Atau lebih baik lagi, temukan cara yang lebih baik:
/**
* Translate standard URL parameters (?foo=bar&baz=bork) to zend-style
* param (foo/bar/baz/bork). Query-string style
* values override existing route-params.
*/
public function mergeQueryString(){
if ($this->getRequest()->isPost()){
throw new Exception("mergeQueryString only works on GET requests.");
}
$q = $this->getRequest()->getQuery();
$p = $this->getRequest()->getParams();
if (empty($q)) {
//there's nothing to do.
return;
}
$action = $p['action'];
$controller = $p['controller'];
$module = $p['module'];
unset($p['action'],$p['controller'],$p['module']);
$params = array_merge($p,$q);
$this->_helper->getHelper('Redirector')
->setCode(301)
->gotoSimple(
$action,
$controller,
$module,
$params);
}
person
timdev
schedule
23.02.2011