Hola… generalmente siempre vengo con preguntas que son retos al conocimiento del framework y esta vez no es la excepcion…
En mi aplicación estoy creando un buscador que por palabras claves encuentre registros relacionados en diferentes modelos… los resultados son mostrados en un zii.widgets.CListView … y hasta aqui todo bien… Los resultados encontrados son mostrados en l CListView de forma separada por cada modelo…
Solo que el problema es cuando un CListView trae mas de una pagina de resultados, porque al intentar pasar a la pagina 2 no realiza correctamente el filtro de busqueda…
Veo que la peticion enviada por ajax va mas o menos asi:
Bueno, mi buscador funciona y busca en n cantidad de modelos que les sea indicado… mi problema es que el render de los resultados los hago en un cListView … y al paginar es donde llegan los errores… creo que voy a ver la forma de extender cListView para que haga ajax update de la paginacion tomando algun parametro…
Ahora con respecto a lo que tienes ese $dataProvider lo pasas a algun grid o lista… ya probaste la paginacion …
Y ya que utilizas una sola vista para los resultados… supongo que tienes en todas tus tablas campos por ej id, descripcion, nombre… etc… me refiero a una nomenclatura de atributos similares… a diferencia de lo que yo tengo cada tabla tiene campos con atributos diferentes por lo que necesite un _result por cada modelo generado…
Si buscas "cosmética" te saldrán todos los productos de todas las subcategorias de cosmética, + todos los productos que contenga esa palabra en su nombre o descripcion, ya me entiendes, pero lo que pasa es que sí, busco en esas tres tablas pero sólo muestro información de una.
Estoy pensando una posible solución a tu problema pero no se me ocurre
De hecho la lista de resultados no se pueden unir en un mismo cListView porque el itemView no funcionaria para todos los atritutos de diferentes modelos … es por eso que tengo un _result para cada modelo del que se encuentra informacion…
Intentaria hacer un cactivedataprovider cuyo array de contenidos fuese tal que asi:
array(‘nombremodelo’=>id) y en el view obtendria ese modelo porque sabes que modelo es y loadmodel por su id, solo haria falta implementar una especie de tostring en cada modelo que te devuelva lo que quieres mostrar de la forma que lo quieras mostrar.
No se si es posible pero suerte y estare pendiente de tu solucion un saludo.