laravel 5.1中的动态网址段名称

时间:2015-12-14 20:46:27

标签: php laravel laravel-4 laravel-5 laravel-routing

事实上,我正在寻找获取网址细分的方法并将其替换为另一个字符串名称,例如/setting在我的视图中显示它{1}}阿拉伯语

经过研究,我发现الضبطsubstr_replace可以实现这一目标 如下:

str_ireplace

如果我有许多不同的路线可以在 $seg2 = request()->segment(2); ($seg2 == 'setting') ? $seg2 = str_ireplace($seg2,'الضبط',$seg2) : $seg2 = str_ireplace($seg2,'another_segment_name', $seg2); 地方,我认为这种方法非常糟糕。

如果有任何其他方法可以实现,请帮助我,谢谢

2 个答案:

答案 0 :(得分:1)

在我看来,您可以使用本地化文件,我的意思是,您可以使用Laravel's Localization功能。例如,将messages.php文件放在resources/lang/ar文件夹中,可以映射key => value对,如:

<?php

return [
    'settings' => 'الضبط',
    'otherKey' => 'some Arabic word'
];

然后,您可以像下面一样使用它(它将用适当的值替换设置):

echo trans('messages.' . request()->segment(2));

// Or use this for blade template
{{ trans('messages.' . request()->segment(2)) }}

要使其正常工作,您需要在ar文件中将语言环境(默认语言)设置为config/app.php,但您可以自动化它,我的意思是,您可以在运行时设置语言环境。希望你明白了,只需正确阅读文档即可。顺便说一下,这只是一个想法,如果有必要,你可以采用不同的方式。

答案 1 :(得分:0)

感谢@The Alpha的帮助,事实上我已经实现了我的需求,但我做了一些改变以实现它我将展示它以帮助任何其他人需要这样做

首先我在segments.php创建了resources/lang/ar文件,并在ar

中将当地语言更改为config/app.php

并在segments.php

<?php

// Segments Array for navigation paths on view  

return [
  'users' => 'المستخدمين',  //maybe to be seg2
  'settings' => 'الضبط',   //also maybe to be seg2
];

在我看来

<!-- Simple condition to check if user on segment 2 or not and fetch the proper segment name according to incoming segment in url -->
            {{(request()->segment(2) != '') ? trans('segments.'.request()->segment(2)) : '' }}