感谢您提供的任何帮助。我学习Laravel 5.1已经10天了,所以对我错过的任何建议都将不胜感激!
我在Laravel 5.1中解决命名路由时遇到问题。我正在构建一个应用,其网址格式为{organisation}.website.com
,其中{organisation}
是在客户注册时定义的。
使用样本子域时,代码路由完美,只要我对路由地址进行硬编码(例如:redirect('/home');
),但是当我尝试通过来自Controller的命名路由进行路由时(例如:redirect()->route('session.create');
)路线解决方式如下:
http://%7Borganisation%7D.website.com/home
我的路线看起来像这样:
<?php
/**
* Entity routes - resolves {organisation}.website.com
*/
Route::group([
'domain' => '{organisation}.' . env('APP_DOMAIN')
], function(){
/*
|----------------------------------------------------------------------
| Freely available routes for login, registration, password reset etc
|----------------------------------------------------------------------
*/
Route::group([
'middleware' => 'guest'
], function(){
// Login
Route::get('login', ['uses' => 'SessionController@create', 'as' => 'session.create']);
Route::post('login', ['uses' => 'SessionController@store', 'as' => 'session.check']);
});
Route::group([
'namespace' => 'Website',
'middleware' => ['authorise'],
], function(){
});
/*
|-----------------------------------------------------------------------
| Potentially secured routes
|-----------------------------------------------------------------------
*/
Route::group([
'middleware' => ['authorise']
], function(){
// Logout and destroy all Auth data
Route::get('logout', ['uses' => 'SessionController@destroy', 'as' => 'session.destroy']);
});
});
在我的控制器中,我这样称呼路由:
return redirect()
->route('session.create')
->withInput($request->only('email', 'remember'))
->withErrors([
'email' => $this->getFailedLoginMessage(),
]);
并且它成功完成,但使用上面的URL和404.如果我改为这样,它可以很好地工作。
return redirect('/home')
->withInput($request->only('email', 'remember'))
->withErrors([
'email' => $this->getFailedLoginMessage(),
]);
我在组织子域中设置什么以使命名路由有效?谢谢!
答案 0 :(得分:0)
搞定了。下面是我如何修复问题,基本上我必须动态绑定到子域的slug路径。希望这有助于某人!
我首先必须将Organisation
类传递给我的控制器方法并更改路由调用,如下所示:
public function destroy(Organisation $organisation)
{
Auth::logout();
return redirect()->route('session.create', ['organisation' => $organisation->slug]);
}