2012-09-27 26 views
6

Tôi đang cố gắng sử dụng tham số ajaxUrl của CGridView và nó không có hiệu lực.Làm cách nào để sử dụng tham số ajaxUrl của CGridView trong Yii?

$this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'ge-cg-'.$myLib['id'], 
    'filter'=>$geCGModel, 
    'dataProvider'=>$dataProvider, 
    'columns'=>$columns, 
    'ajaxUrl'=>Yii::app()->createUrl('Something/search'), 
)); 

Điều này dường như không ghi đè url ajax của tiện ích CGridView. Yêu cầu ajax của lưới vẫn được chuyển đến bộ điều khiển kết xuất (điều này khác với bộ điều khiển riêng của lưới).

Cảm ơn!

Trả lời

10

Thuộc tính ajaxUrl chỉ hoạt động cho các tìm kiếm, cả "bộ lọc mỗi cột" và "tìm kiếm nâng cao". Các liên kết sắp xếp và liên kết pagination được tạo từ $dataProvider mà bạn chỉ định. Bạn có thể kiểm tra nguồn của CGridView và CDataColumn để xem cách paginationsorting được trích xuất từ ​​DataProvider tương ứng.

Do đó nếu bạn muốn những liên kết này cũng sử dụng cùng một ajaxUrl mà bạn muốn chỉ định, sau đó bạn phải thiết lập các route tài sản cho cả hai đối tượng CPagination, và đối tượng CSort của $dataProvider, phần nào như thế này:

$dataProvider=new CActiveDataProvider('Modelname',array(
    'criteria'=>$criteria, 
    'pagination'=>array(
     'route'=>'something/search' 
    ), 
    'sort'=>array(
     'route'=>'something/search' 
    ) 
)); 

Kết hợp với cài đặt CGridView hiện tại của bạn sẽ hoạt động như mong đợi.

+0

tôi hy vọng tôi nhận được bạn một cách chính xác, nhưng nhìn vào url của bạn một lần nữa, có vẻ như bạn muốn tìm kiếm để làm việc với ajaxurl (không chỉ phân trang và sắp xếp). Tìm kiếm sẽ hoạt động mà không thực hiện các thay đổi mà tôi đã đề cập trong câu trả lời, vì vậy nếu tìm kiếm của bạn không hoạt động, hãy cho tôi biết. –

+1

Tuyệt vời. Cảm ơn bạn. Tôi đã kết thúc làm việc xung quanh nó bằng cách thực hiện một yêu cầu ajax thứ cấp mà mặc định tất cả mọi thứ đến đúng url, nhưng điều này sẽ hữu ích trong tương lai. – glyph

+0

Vui mừng được giúp đỡ, nhưng tôi chỉ tò mò, tìm kiếm của bạn có hoạt động với ajaxUrl đó không? nếu không bạn có thể cho tôi biết nếu đó là toàn bộ cấu hình của bạn cho GridView (trừ các cột)? hoặc bạn đã có một số tài sản khác cũng được xác định? cũng cho tôi biết phiên bản yii của bạn. –

Các vấn đề liên quan