2017-01-26 26 views
1

私はLaravelアプリケーションをサブディレクトリから実行していますので、このようなURLヘルパーを使用するには{{ url('users') }}の代わりに{{ url('subdirectory/users') }}の代わりにforceRouteUrl()メソッドを使用します。AppServiceProvider.phpファイル。それは次のようになります。forceRootUrl()を使用すると一部のルーティングが中断されます

public function boot() 
    { 
     URL::forceRootUrl(Config::get('app.url')); 

... 

そして、私の.env:APP_URL=http://app.dev/subdirectory

ルートを返す場合を除いて、これまでのところは良いです。

function sort_schedule($column, $order) 
{ 
    return route('schedule', [ 
       'sortBy' => $column, 
       'sortOrder' => $order, 
      ] 
     ); 
} 

しかし、それが生成するリンクはこれです:たとえば、私はこれを行うソート方法を持って、私は Kyslik's Column Sortableパッケージを使用する場合 http://app.dev/subdirectory/subdirectory/...

同じことが起こります。

どうすればこの問題を解決できますか?

答えて

1

url()やasset()などの他のヘルパーにはこの問題はありませんが、routeルートヘルパーはlaravelにサイトルートとforceRootUrl()から直接アクセスできない場合、使用されている。 私はlaravel 5.4を使用していますが、この問題は以前のバージョンでも発生しています。

は、この問題を解決するために、私は三つの可能な解決策が見つかりました:代わりに、ルートの

  1. 使用のURLを()()と手動のURL
  2. 毎回あなたが)(ルートを使用し第三としてfalseを渡すことを忘れないでくださいを作成しますパラメータは、それは私が第三の選択肢を選んだとCustomHelperを作成したカスタム1

でこの問題

  • オーバーライドデフォルトルート()ヘルパーを持っていない相対パスを使用します。私の新しいroute()ヘルパーを含むphpファイル。ここで は、デフォルトのヘルパーを無効にする方法については、次のとおりです。私のCustomHelper.phpファイル内 https://laracasts.com/discuss/channels/general-discussion/override-functions-in-supporthelpersphp

    私はapp.url_suffix iが設定/アプリで定義されたカスタム変数である。この

    function route($name, $parameters = [], $absolute = true) 
    { 
        $appUrl = config('app.url'); // in your case: http://app.dev 
        $appUrlSuffix = config('app.url_suffix'); // in your case: subdirectory 
    
        // Additional check, do the workaround only when a suffix is present and only when urls are absolute 
        if ($appUrlSuffix && $absolute) { 
         // Add the relative path to the app root url 
         $relativePath = app('url')->route($name, $parameters, false); 
         $url = $appUrl.$relativePath; 
        } else { 
         // This is the default behavior of route() you can find in laravel\vendor\laravel\framework\src\Illuminate\Foundation\helpers.php 
         $url = app('url')->route($name, $parameters, $absolute); 
        } 
    
        return $url; 
    } 
    

    を追加しました。 PHP

    'url_suffix' => env('APP_URL_SUFFIX', null), 
    

    と.env設定ファイルの

    APP_URL_SUFFIX=subdirectory 
    
  • 関連する問題