我在我的网络应用程序中使用本地化功能。但我想将App::getLocale()
添加到url()
。例如,在我添加<a href="{{url('/admin')}}">link</a>
的视图中,我想将HTML中的网址显示为http://localhost/mysite/en/admin
。我该怎么办?
我可以自定义内置URL
辅助函数吗?
答案 0 :(得分:1)
url()方法不允许这样做,因为它会为您提供的第一个参数的确切值生成网址。但是,如果您切换到 route()方法并为路线定义了前缀,则可以实现所需。
// define a route group with a prefix in routes.php
Route::group(['prefix' => App::getLocale()], function() {
Route::get('admin', ['as' => 'admin', 'uses' => 'AdminController@action']);
});
// generate prefixed URL
echo route('admin');
如果您的语言区域为 en ,则上述行应为您提供 / en / admin
等网址答案 1 :(得分:1)
在Laravel 5.4中,使用以下
{{ url('Your_Prefix', 'login') }}
url只是将整个路径格式化为所请求的地址,您可以在其中添加任何内容。
答案 2 :(得分:0)
我知道这是一个老问题,但是今天我遇到了同样的问题。根据其他答案,我想出了以下解决方案:我创建了一个使用Laravel url()
helper函数的helper类,但是在调用helper函数之前对$path
变量进行了预处理。我为url()
和secure_url()
辅助函数创建了自己的实现。
这是我在应用程序中实现了本地化之后的一项后续操作,为此我咨询了this question。
看看我的解决方案。我希望有一天对某人有用:
<?php
namespace App\Http\Helpers;
class Helpers {
/**
* Generate a url for the application.
*
* @param string $path
* @param mixed $parameters
* @param bool $secure
* @return \Illuminate\Contracts\Routing\UrlGenerator|string
*/
public static function url($path = null, $parameters = [], $secure = null) {
$path = (string) $path;
if (strlen($path) > 0 && $path[0] !== '/') {
$path = '/' . $path;
}
return url(app()->getLocale() . $path, $parameters, $secure);
}
/**
* Generate a HTTPS url for the application.
*
* @param string $path
* @param mixed $parameters
* @return string
*/
public static function secure_url($path, $parameters = []) {
return static::url($path, $parameters, true);
}
}
答案 3 :(得分:-3)