信息:我正在使用Larvel 6.1版。0,我希望我的网站支持不同的语言。因此,我创建了一个新的中间件,并希望为我的路由提供一个前缀,以便Laravel可以确定语言。也许有更好的方法,但这是我到目前为止所做的。
URL最终应该是这样的:
mywebsite.com/en/home, url/locale/home
用于设置区域设置的中间件
namespace App\Http\Middleware;
use Closure;
class SetLocale
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
app()->setLocale($request->segment(1));
return $next($request);
}
}
在内核中注册了新的中间件setlocale。php
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
'setlocale' => \App\Http\Middleware\SetLocale::class,
];
我的网络。php
Route::group(['middleware' => ['setlocale'],'prefix' => '{locale}', 'where' => ['locale' => '[a-zA-Z]{2}']], function() {
Route::get('/', 'NewController@frontpage');
Route::get('/home', 'NewController@frontpage')->name("home");
Auth::routes();
});
由于某种原因,我的路由组中的前缀部分根本不起作用。当我进入我的网站。com/en/home在我的浏览器中
缺少[Route:login][URI:{locale}/login]所需的参数
这很奇怪,因为我没有请求登录路线,而是请求归属路线,我通过了一个区域。有人看到错误或有更好的主意来实现对Laravel版本6中几种语言的支持吗?
提前感谢。
你将需要采取Auth::路由()
外路由组:
Route::group(['middleware' => ['setlocale'],'prefix' => '{locale}', 'where' => ['locale' => '[a-zA-Z]{2}']], function() {
Route::get('/', 'NewController@frontpage');
Route::get('/home', 'NewController@frontpage')->name("home");
});
Auth::routes();
该问题是由于{locale}
前缀在/login
路由(以及所有其他身份验证路由)前面而引起的。
我正在使用管理面板开发Laravel 5.0 Web应用程序。我正面临一个问题与路线。我有如下分组管理路线, 事情进展顺利。我可以毫无问题地使用跟随, 但是我想 显示登录页面或重定向到 所以我把第一组改成了第二组, 现在当我访问 我在chrome上看到“这个网页有一个重定向循环”。在路线组中可能吗?如果没有,如何使用.htaccess执行此操作? 更新 下面是中间件的方法。它只会更改身份验证的基础
作为一个 web 后台框架,路由无疑是极其重要的一部分。本博客接下来几篇文章都将会围绕路由这一主题来展开讨论,分别讲述: 路由的使用 路由属性注册 路由的正则编译与匹配 路由的中间件 路由的控制器与参数绑定 RESTful 路由 和之前一样,第一篇将会利用单元测试样例说明我们在平时可能用到的 route 的 api 函数用法,后面几篇文章将会剖析 laravel 的 route 源码。下面开始介绍
我正在尝试利用Laravel的登录页路径。例如,默认情况下,Laravel会将您带到欢迎页面,并且斜杠后没有url文本。 在我的欢迎页面中,我使用以下条件根据路线名称应用样式。 然而,此代码不工作。如何正确查看欢迎页面的路线? 编辑:使用“请求”而不是“路由”使其工作。然而,为了保持一致性,我想知道是否也可以使用“路线”来完成。
我知道本身不会向路由表添加路由。在您的操作中,您需要声明属性。我很难找到一个权威的blog/msdn页面/说明为什么by defalut不在路由表中添加路由的东西。 有没有人有一个权威的帖子,确实包含了这种情况,如果是这样,你会让我知道是谁。非常感谢。 编辑以澄清我的问题 上面的场景之所以能够工作,是因为我们显式地声明了上的操作有一个空路由。一旦我们这样做,路由就被添加到 第一个场景不起作用,因为
通过Group可以实现路由分组,Group 路由分组可以简化你的路由撰写: 有两种方法来使用Group: 第一种,创建Group对象,通过Group方法传入 g := tango.NewGroup() g.Get("/1", func() string { return "/1" }) g.Post("/2", func() string { return "/2" }) o :=
利用 pipeline 进行中间件的层层处理后,接下来 laravel 就会利用请求的 url 来寻找与其对应的路由,laravel 采用对路由注册的 uri 进行正则编译,然后利用 request 的 url 进行正则匹配来寻找正确的路由。 前期准备 在上一篇文章中,我们了解了 Pipeline 的原理,我们知道它调用了 dispatchToRouter() 这个函数: protected fu