2014-09-20 56 views
0

假設我的應用程序的基本URL是 - http://www.example.com(我沒有在任何配置文件中設置任何內容來指定它)。應用程序中有很多硬編碼的網址。現在Laravel - 全球變更基地網址?

eg. <a href="/contact">Contact</a> 

,如果我去,雖然使用的URL像應用程序 - http://www.example.com/country,是否有可能分配一個全局數據庫的URL,在那裏當我點擊聯繫人就帶我去 - http://www.example.com/country/contact

有很多這樣的硬編碼的URL,單獨更改它將花費大量的時間(如附加一個全局變量)。有沒有更簡單的方法來做到這一點,或者有沒有在laravel這個特定的配置?我對laravel相當陌生。任何幫助,將不勝感激。

+0

良好的IDE /編輯器+正則表達式將完成這項工作,否則將重寫服務器。 – 2014-09-20 16:58:41

+0

@Jarek - 是的,我確實考慮過這個選項。該應用程序非常龐大,涉及很多文件的更改,另外我最近才獲得應用程序的所有權,我不想搞亂任何東西。 – 2014-09-20 17:13:17

+0

主讚美測試代碼! :) – 2014-09-20 18:19:30

回答

0

你可以嘗試Route Prefixing

Route::group(array('prefix' => 'country'), function(){ 
    Route::get('Contact', '[email protected]'); 
    Route::get('another', '[email protected]'); 
}); 

編輯 嘗試路由過濾

Route::filter('filtername', function($route, $request, $value) 
{ 
    if ($route == 'country') { 
     return Redirect::to(url); 
    } 
}); 
+0

這不會工作。所有硬編碼的URL都在視圖文件中。如果我明確地瀏覽像example.com/country/another這樣的URL,路由纔會起作用。但那不是我的問題。 – 2014-09-20 16:01:49

+0

@ManjunathSingh嘗試路由過濾器,回答編輯 – worldask 2014-09-20 16:10:27

+0

感謝您的幫助!但我不想在內部重定向它。我想要顯式的href。 – 2014-09-20 17:32:51

1

您可以使用應用過濾器的有些繁瑣的解決方案,如@worldask建議,但我認爲最好是設置一個named route並使用正則表達式更改所有事件(任何像樣的編輯器都允許這樣做)。這樣,在您的應用程序的整個生命週期中,您只需要更改routes.php中的路線,並且它將在任何地方反映出來。

e.g

Route::get('country/contact', ['as' => 'contact', 
           'uses' => '[email protected]']; 

<a href="{{route('contact')}}">Contact</a> 

當然,同樣的原則也適用於添加路由的前綴組,所以你可以用整個路線與「國家」爲前綴的一組文件。

+0

此更改在應用程序範圍內。所以我的問題是 - 如何在配置文件中更改應用的基礎URL?哪個特定的文件和哪個特定的屬性? – 2014-09-20 17:11:19

+0

這是我第一次嘗試:)它似乎並沒有工作:P – 2014-09-20 17:23:21

+0

是的,我想除了手動替換所有的href之外,我沒有任何其他選擇。 – 2014-09-20 17:29:19