我尝试使用slim框架创建自己的multilang应用程序。我为包含所有标准应用程序路径的所有语言生成了路由组,如下所示:
$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
等...
但是当我在浏览器中尝试它时,只有标准的工作(项目/和项目/家庭)。使用/ fr或/ en的自定义转到$this->app->notFound
答案 0 :(得分:0)
从url中提取lang时,我正在重写Slim变量['PATH_INFO']。这就是它无法正常工作的原因。所以它现在工作正常,但我仍然有兴趣知道是否有更好的方法将multilang添加到一个苗条的应用程序。
有用的资源