2015-04-23 43 views
2

在用戶頁面上創建分頁時,分頁鏈接不正確,它們在/ page = 1之前,所以鏈接重定向到根目錄,404找不到。laravel 5中的分頁產生錯誤的鏈接

控制器的方法:

public function getRegister() 
{ 
    $users = User::where("admin", 0)->paginate(3); 

    return view('auth.register', compact('users')); 
} 

視圖

<?php echo $users->render(); ?> 

用戶頁面網址:http://localhost:8080/pal/public/agent/create

分頁鏈接:http://localhost:8080/pal/public/agent/create/?page=1

當點擊分頁鏈接瀏覽器重定向我:http://localhost:8080/agent/create?page=3並獲得404頁面N OT FOUND

回答

20

不幸的是,至少現在Laravel 5是如何工作的。

要擺脫額外的斜線,您必須在呈現它們之前手動處理分頁鏈接。

您可以: 1)在你的控制器,調用的setpath()上的分頁程序實例,就像這樣:

public function getRegister() 
{ 
    $users = User::where('admin',0)->paginate(3); 
    $users->setPath('your/custom/path'); 
    return view('your/view')->with('users',$users); 
} 

接下來在你看來,只需調用render(),並預期它應該工作。

或2)修改沒有在控制器,但更改鏈接的格式在您的視圖,例如:

{!! str_replace('/?', '?', $users->render()) !!} 

您可以參考question我之前提出。

希望這會有所幫助!


我仍然在尋找更好的解決方案,但沒有得到任何尚未:(


更新於2016年5月30日

感謝所有上票,請請注意,在Laravel 5.2中,您不必以上面提到的方式破解代碼!在視圖中調用render()就是您需要做的所有事情。這太好了,不是嗎?

+0

@ Carter.thank you.it幫我 – vision

+0

@tester不用擔心。 – Carter

0

The這裏最好的方法(不需要t Ø更改代碼)是修改.htacces文件:

RewriteEngine On 
RewriteBase /pal/public/ 

# Redirect Trailing Slashes If Not A Folder... 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)/$ $1 [L,R=301] <-- removed "/" before $1 

這樣(沒有在這個片段中的音符)從分頁鏈接應該正確地呈現。

0

我想補充的勸卡特:

public function getRegister() 
    { 
     $users = User::where('admin',0)->paginate(3); 
     $users->setPath('your/custom/path'); 
     return view('your/view')->with('users',$users); 
    } 

添加爲 'url()',並與路線Concat的它。例如'/ admin/user/list'

$users->setPath(url() . '<route>'); 
2

我喜歡卡特的回答,我更喜歡第一個使用setPath的建議。設置「setPath」爲一個空字符串爲我工作。:)

$users->setPath(''); 
+0

太棒了!這個愚蠢的答案需要三個小時才能解決。 –