SlimFramework php 自定义多语言组的 404 问题
SlimFramework php 404 issue with custom multilang groups
我尝试使用 slim 框架制作我自己的多语言应用程序。我为包含所有标准应用程序路由的所有语言生成了路由组,如下所示:
$this->app->group($base_folder, function () use ( $base_folder ) {
include 'includes.php';
$availableLangs = explode(",", USE_MULTILINGUAGES);
if(strlen($availableLangs['0']) > 0){
foreach($availableLangs as $availableLang) {
$this->app->group('/'.$availableLang, function () {
include 'includes.php';
});
}
}
});
我的文件 include.php 包含我的标准路线,如下所示:
//Redirect to Home
$this->app->map('/', function () {
echo '/'.'<br/>';
$this->app->redirect('home');
})->via('GET');
//Homepage
$this->app->map('/home', function () {
$data = new Admin\GetController( 'home' );
$data->send("Home/home.template.html");
})->via('GET');
//Others
require 'Routes/Login.php';
require 'Routes/Logout.php';
require 'Routes/Users.php';
生成的路由很好,显示的时候:
project/
project/en
project/fr
project/home
project/en/home
project/fr/home
等...
但是当我在浏览器中尝试时,只有标准的工作正常( project/ 和 project/home )。 /fr 或 /en 的自定义转到 $this->app->notFound
- 为什么不起作用?
- 有没有更好的方法...?
我在从 url 中提取 lang 时重写了 Slim 变量 ['PATH_INFO']。这就是它不起作用的原因。所以它现在工作正常,但我仍然想知道是否有更好的方法将 multilang 添加到 slim 应用程序中。
有用的资源
我尝试使用 slim 框架制作我自己的多语言应用程序。我为包含所有标准应用程序路由的所有语言生成了路由组,如下所示:
$this->app->group($base_folder, function () use ( $base_folder ) {
include 'includes.php';
$availableLangs = explode(",", USE_MULTILINGUAGES);
if(strlen($availableLangs['0']) > 0){
foreach($availableLangs as $availableLang) {
$this->app->group('/'.$availableLang, function () {
include 'includes.php';
});
}
}
});
我的文件 include.php 包含我的标准路线,如下所示:
//Redirect to Home
$this->app->map('/', function () {
echo '/'.'<br/>';
$this->app->redirect('home');
})->via('GET');
//Homepage
$this->app->map('/home', function () {
$data = new Admin\GetController( 'home' );
$data->send("Home/home.template.html");
})->via('GET');
//Others
require 'Routes/Login.php';
require 'Routes/Logout.php';
require 'Routes/Users.php';
生成的路由很好,显示的时候:
project/
project/en
project/fr
project/home
project/en/home
project/fr/home
等...
但是当我在浏览器中尝试时,只有标准的工作正常( project/ 和 project/home )。 /fr 或 /en 的自定义转到 $this->app->notFound
- 为什么不起作用?
- 有没有更好的方法...?
我在从 url 中提取 lang 时重写了 Slim 变量 ['PATH_INFO']。这就是它不起作用的原因。所以它现在工作正常,但我仍然想知道是否有更好的方法将 multilang 添加到 slim 应用程序中。
有用的资源