Локализация Laravel 5: исключить / public / каталог

Я пытаюсь реализовать локализацию в своем проекте 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);
}

}

kernel.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');
});
}

Работает отлично, кроме одной вещи. Когда я пытаюсь пойти в http://0.0.0.0/public/css/images/myimage.png это заменяет public с en и если я пойду к /en/public это говорит мне, что маршрут не существует.

Любая помощь в том, чтобы исключить общедоступный каталог из этого или реализовать локализацию лучше, без использования промежуточного программного обеспечения?

5

Решение

Ваше изображение должно быть в общей папке, а общая папка должна быть общей и настроенной в Apache.

Вы должны исправить свою конфигурацию, чтобы получить доступ к изображению, используя следующий URL: http://0.0.0.0/css/images/myimage.png

И это произойдет, когда public — ваша настроенная общая папка.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]