Laravel:如何使用视图助手获取当前URL及其参数

7
我希望在我的视图中创建一个链接,该链接指向与其所在页面相同的页面。我还希望能够传递参数。
例如,我想更改语言。我有一个路由,类似于:
domain.com/{lang}/xyz

在我的看法中,我想要做类似于以下的事情

<a href="{{ URL::action(this, ['lang' => 'en']) }}">EN</a>

所以我可以轻松地重新加载页面,只需更改“lang”参数即可。
希望这是可以理解的。请尽力帮助我。
(另一个副问题:是否没有资源,例如Laravel中所有视图助手的列表?我在哪里可以知道可用的视图助手?)
1个回答

22

使用 Laravel 的帮助函数在视图中使用:

url()->current()

以下代码可获取当前的URL。如果需要获取当前路由名称,

Route::current()->getName()

现在您可以使用此路由名称创建自己的新URL。

例如:

<a href="{{ URL::action(Route::currentRouteName(), ['lang' => 'en']) }}">EN</a>

您的路由定义可能类似于:

Route::get('/{lang}/about/', ['as'=>'about_us', 'uses'=>'PagesController@about'])

这将为您提供当前的URL。

但在您的情况下,最好使用此包来支持多语言: https://github.com/mcamara/laravel-localization

它非常简单易用。


那不是回答我的问题。 - Fabian
url()->current() 我应该如何在我的 <a href="">EN</a> 中使用它,并带上 {lang} 参数? - Fabian
而且在我的视图中不使用PHP?Laravel使用模板引擎,因此您不必在视图中处理PHP代码。 模型-视图-控制器,记住吗?应该有一个视图辅助程序来完成这个任务。 - Fabian
1
同时也有 <a href="{{ URL::action(Route::currentRouteName(), ['lang' => 'en']) </a>">EN}} - Jilson Thomas
在UrlGenerator.php的第590行出现了ErrorException: 未定义app\Http\Controllers\的操作。(视图:/var/www/html/app/webapp/resources/views/main.blade.php)(视图:/var/www/html/app/webapp/resources/views/main.blade.php) - Fabian
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接