5

Laravel 5 プロジェクトでローカリゼーションを実装しようとしていますが、問題が発生しています。言語をキャッチするために入れたミドルウェアは次のとおりです。

<?php namespace App\Http\Middleware;

use Closure;
use Illuminate\Routing\Redirector;
use Illuminate\Http\Request;
use Illuminate\Foundation\Application;
use Illuminate\Contracts\Routing\Middleware;

class Language implements Middleware {

    public function __construct(Application $app, Redirector $redirector, Request $request) {
        $this->app = $app;
        $this->redirector = $redirector;
        $this->request = $request;
    }

    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        // Make sure current locale exists.
        $locale = $request->segment(1);


        if ( ! array_key_exists($locale, $this->app->config->get('app.locales'))) {
            $segments = $request->segments();
            $segments[0] = $this->app->config->get('app.fallback_locale');

            return $this->redirector->to(implode('/', $segments));
        }

        $this->app->setLocale($locale);

        return $next($request);
    }

}

カーネル.php:

protected $middleware = [
        'App\Http\Middleware\Language',
        'Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode',
        'Illuminate\Cookie\Middleware\EncryptCookies',
        'Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse',
        'Illuminate\Session\Middleware\StartSession',
        'Illuminate\View\Middleware\ShareErrorsFromSession',
        'App\Http\Middleware\VerifyCsrfToken',
    ];

routeserviceprovider.php:

public function map(Router $router, Request $request)
    {
        $locale = $request->segment(1);

        $this->app->setLocale($locale);

        $router->group(['namespace' => $this->namespace, 'prefix' => $locale], function($router) {
            require app_path('Http/routes.php');
        });
    }

1つのことを除いて、それは完全に機能しています。http://0.0.0.0/public/css/images/myimage.pngに移動しようとすると、に置き換えpublicられen、移動する/en/publicとルートが存在しないことがわかります。

パブリック ディレクトリをこれから除外するか、ミドルウェアを含まないより良い方法でローカライズを実装するのに役立ちますか?

4

1 に答える 1

1

イメージは public フォルダーの下にある必要があり、public フォルダーはフォルダー public であり、Apache で構成されている必要があります。

次の URL を使用してイメージにアクセスできるように、構成を修正する必要があります: http://0.0.0.0/css/images/myimage.png

これは、パブリックが構成済みのパブリック フォルダーである場合に発生します。

于 2015-08-05T12:09:00.870 に答える