【问题标题】:Laravel 5.1 named route resolution with sub-domain not workingLaravel 5.1 命名路由解析,子域不起作用
【发布时间】:2015-10-27 14:04:30
【问题描述】:

感谢您提供的任何帮助。我已经学习 Laravel 5.1 10 天了,所以对于我错过的任何建议将不胜感激!

我在解决 Laravel 5.1 中的命名路由时遇到问题。我正在构建一个应用程序,其 URL 格式为 {organisation}.website.com,其中 {organisation} 在客户注册时定义。

在使用示例子域时,代码路由完美,只要我硬编码路由地址(例如:redirect('/home');),但是当我尝试通过来自控制器的命名路由(例如: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(),
    ]);

为了使命名路由正常工作,我在组织子域中遗漏了什么?谢谢!

【问题讨论】:

    标签: php routes laravel-5.1


    【解决方案1】:

    搞定了。下面是我解决问题的方法,基本上我必须动态绑定到子域的 slug 路由。希望这对某人有帮助!

    我首先必须将Organisation 类传递给我的控制器方法,然后像这样更改路由调用:

    public function destroy(Organisation $organisation)
        {
            Auth::logout();
    
            return redirect()->route('session.create', ['organisation' => $organisation->slug]);
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-13
      • 2016-04-20
      • 1970-01-01
      • 1970-01-01
      • 2015-08-20
      • 2016-10-20
      • 2022-08-12
      相关资源
      最近更新 更多