在Laravel 5中为现有URL添加前缀

4
问题:我正在我的Web应用程序中实现本地化功能,但该应用程序正在中期开发中,因此为了不重写所有链接中的<form action=""><a href="">,我需要一个解决方案,它将在所有其他路由之前添加URL前缀,如/en/或/es/,但该应用程序将考虑/localhost/en/为localhost/。
为了清晰起见,像<a href="/admin">这样的链接按照预期工作http://localhost/admin,我需要它像http://localhost/en/admin一样工作。
我不知道哪些代码有帮助,所以我会根据请求添加代码。
route.php看起来像这样
<?php

Route::get('/', 'HomeController@index');
Route::get('admin/blocks/{size}', "AdminController@getBlocks");
Route::get('admin/del-block/{id}', "AdminController@getDelBlock");


Route::controllers([
    'admin' => 'AdminController',
    'auth' => 'Auth\AuthController',
    'password' => 'Auth\PasswordController',
    'products' => 'ProductsController'
]);
Route::get('/{slug}', "HomeController@getPage");
Route::get('/{slug}/{subslug}', "HomeController@getPage");

在视图中,我手动生成URLs

<a href="/admin/blocks{{$block->size}}">Link</a>
<form action="/products/new" > </form>

这里有一个很好的例子可以添加本地化 https://laracasts.com/discuss/channels/tips/example-on-how-to-use-multiple-locales-in-your-laravel-5-website - Kamran
@KamranAdil 做了所有的事情,但这并没有帮助,所有的路由仍然无法使用。 - Subject
你需要提供更多信息。你尝试过什么?向我们展示你的路由文件以及如何在视图中生成URL。 - Fabio Antunes
1个回答

1
如果您想让http://localhost/adminhttp://localhost/en/admin由相同的控制器处理,则需要在routes.php中编写2组路由。

这样就有2个入口点指向完全相同的应用逻辑。

第一个入口点是非本地化的URL:/admin。第二个将采用参数:{lang}/admin


但是 /en/ 可以是任何 ISO 2 字符国家代码,这并不合理,我需要 X 套路由吗???如果语言是动态添加的,那么甚至不可能。 - Subject

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接