我正在使用Yii框架,並且在與Pager小部件一起使用bootstrap.widgets.TbGridView小部件時遇到了問題。Yii Pager不按預期工作
(請注意,我是新來的Yii - 可以隨意地指出我的名義任何明顯的失誤)
所有的過濾工作正常,但是當我選擇了「達到」下拉菜單中的任何選項它會更改尋呼機的URL結構。
例如,默認情況下,當我看到在Firebug尋呼機鏈接的URL看起來像這樣:
<a href="/mysite/shop/purchases/admin/ajax/shoppurchases-grid/ShopPurchases_sort/user.form_name/ShopPurchases_page/3">3</a>
然而,一旦我請從「達到」下拉列表中選擇,並嘗試再次使用尋呼機它不再起作用,並通過螢火蟲檢查之後尋呼機環節都發生了巨大變化,以這樣的:
<a href="/mysite/shop/purchases/admin/ShopPurchases%5BfilterProductName%5D//ShopPurchases%5BfilterUserName%5D//ShopPurchases%5BfilterFormName%5D//ShopPurchases%5BfilterFirstName%5D//ShopPurchases%5Bprice%5D//ShopPurchases%5Bpurchase_time%5D//ShopPurchases%5Bfulfilled%5D//ShopPurchases_page/3/ajax/shoppurchases-grid/ShopPurchases_sort/user.form_name">3</a>
我期望的URL保留了非常相似的結構上面的初始環節。
下面是頁面視圖代碼提前
<div class="row-fluid">
<div class="inner">
<?php $this->widget('bootstrap.widgets.TbGridView',array(
'id' => 'shoppurchases-grid',
'type' => 'striped bordered condensed',
'dataProvider' => $model->setPurchaseType('school')->search(10),
'filter' => $model,
'template' => '{summary}{items}{pager}',
'columns' => array(
array(
'header' => 'Product Image',
'value' => 'CHtml::image($data->product->displayImageUrl, $data->product->product_name, array("class"=>"grid-image"))',
'type' => 'raw',
),
array(
'header' => 'Product',
'name' => 'product.product_name',
'value' => '$data->product->product_name',
'filter' => CHtml::activeTextField($model, 'filterProductName', array('placeholder' => 'filter by product name')),
'type' => 'raw',
),
array(
'header' => 'Username',
'name' => 'user.firstname',
'value' => '($data->user instanceof MyUser) ? CHtml::link(CHtml::encode($data->user->username),array("/carrot/myuser/update","id"=>$data->user->user_id)) : ""',
'filter' => CHtml::activeTextField($model, 'filterUserName', array('placeholder' => 'filter by username')),
'type' => 'raw'
),
array(
'header' => 'Form Name',
'name' => 'user.form_name',
'value' => '($data->user instanceof MyUser) ? $data->user->form_name : ""',
'filter' => CHtml::activeTextField($model, 'filterFormName', array('placeholder' => 'filter by form name')),
'type' => 'raw'
),
array(
'header' => 'Student',
'name' => 'user.username',
'value' => '($data->user instanceof MyUser) ? $data->user->fullname : ""',
'filter' => CHtml::activeTextField($model, 'filterFirstName', array('placeholder' => 'filter by first name')),
'type' => 'raw'
),
array(
'header' => 'Price',
'name' => 'price',
'filter' => BHtml::activeCompareableTextField($model, 'price', array('placeholder' => 'filter by price')),
'type' => 'raw'
),
array(
'header' => 'Purchase Time',
'name' => 'purchase_time',
'value' => 'app()->dateFormatter->format("dd/MM/y H:m:s", $data->purchase_time)',
'filter' => BHtml::activeCompareableDateRange($model, 'purchase_time', array('placeholder' => 'filter by purchase time')),
'type' => 'raw'
),
array(
'header' => 'Fulfilled',
'name' => 'fulfilled',
'value' => user()->hasAuth(Group::READ_ONLY, "equal") ? '$data->fulfilled ? "Yes" : "No"' : 'CHtml::activeCheckBox($data, "fulfilled")',
'filter' => CHtml::activeDropDownList($model, 'fulfilled', array(0 => 'No', 1 => 'Yes'), array('prompt' => 'All')),
'type' => 'raw',
'htmlOptions' => array('class' => 'align-center'),
'headerHtmlOptions' => array('class' => 'align-center'),
),
array(
'name' => 'organisation_name',
'visible' => ((user()->hasAuth(Group::GROUP_ADMIN, 'equal')) && (!user()->hasState('view_org'))),
'filter' => CHtml::activeDropDownList($model, 'organisation_id', CHtml::listData(Organisation::model()->leaChildren, 'organisation_id', 'organisation_name'), array('prompt'=>'All Schools')),
),
array(
'header' => '',
'value' => 'CHtml::link("Refund", Yii::app()->controller->createUrl("bulk",array("id"=>$data->primaryKey)), array("class" => "btn btn-save", "name" => CHtml::activeName($data,"refunded")))',
'type' => 'raw',
'visible' => !user()->hasAuth(Group::READ_ONLY, "equal")
),
),
)); ?>
</div>
謝謝 - 請記住我是新來的Yii
更新... 我檢查的螢火日誌並且可以看到GET請求失敗(因爲它在Firebug日誌中顯示爲紅色文本) URL是:
http://mysite.local/site/shop/purchases/admin/ShopPurchases%5BfilterProductName%5D//ShopPurchases%5BfilterUserName%5D//ShopPurchases%5BfilterFormName%5D//ShopPurchases%5BfilterFirstName%5D//ShopPurchases%5Bprice%5D//ShopPurchases%5Bpurchase_time%5D//ShopPurchases%5Bfulfilled%5D/0/ajax/shoppurchases-grid/ShopPurchases_sort/price?ajax=shoppurchases-grid
一旦它試圖調用這個'失敗'的URL,那麼尋呼機將停止工作,直到我進行頁面刷新(例如F5)並且它返回到它的默認尋呼機設置。
更新2 ... 由於某種原因直接加載到地址瀏覽器時失敗的URL會自動嘗試添加「www」。在URL的開始,因此完整的URL現在看起來是這樣..
http://wwwmysite.local/site/shop/purchases/admin/ShopPurchases[filterProductName]//ShopPurchases[filterUserName]//ShopPurchases[filterFormName]//ShopPurchases[filterFirstName]//ShopPurchases[price]//ShopPurchases[purchase_time]//ShopPurchases[fulfilled]/0/ShopPurchases_page/2/ajax/shoppurchases-grid?ajax=shoppurchases-grid
這是不是可能與我的本地htaccess文件(此問題似乎並沒有對的我們的「活」的版本存在。應用
URL行爲是警予的GridView的默認值是有返回一個特定的錯誤。在螢火蟲或瀏覽器? – topher
我已更新主要職位 - 我可以在Firebug控制檯中看到一個GET請求,由於某種原因失敗,但不知道什麼是還在繼續 – Zabs
我試圖加載直接在瀏覽器地址欄中失敗的「本地」URL,由於某些原因它用www替換了URL的開頭。 ??? 任何想法,爲什麼它會在我的本地主機上做到這一點 - 注意我在Windows 7上使用wamp – Zabs