Laravel href 重定向

Posted

技术标签:

【中文标题】Laravel href 重定向【英文标题】:Laravel href redirection 【发布时间】:2015-08-24 07:56:28 【问题描述】:

所以我开始使用 Laravel,发现它非常简单,现在我正在创建自己的宁静服务。我的问题是我不知道我是否正确地执行了 href 链接,但是是的,它正在工作。代码如下:

<a href="URL::to('accounts/create')">Add user</a>

在我的控制器中,我只渲染刀片:

public function create()

    return view('accounts.create');

因此,如果我单击“添加用户”链接,它会将我重定向到运行良好的 localhost:8080/accounts/create。我的问题是,有没有更好的方法来做到这一点?就像我更改了路由文件中的任何内容一样,我将不再更改 href 链接?

【问题讨论】:

Laravel 4 - Blade Templating - How to properly Link to Route?的可能重复 【参考方案1】:

理想情况下,您将在您的路线文件中命名路线。 类似的,

Route::get('accounts/create', [as => 'createAccount', 'uses' => 'AccountsController@create']);

你会按如下方式使用它

<a href="URL::route('createAccount')">Add user</a>

在你看来。

这样,即使您更改 url (accounts/create) 或操作名称 (create),您也不必在视图中更改它。允许您的视图是独立的。

【讨论】:

谢谢先生,我可以问一个问题吗?我真的需要在我做的每个应用程序中都做“laravel new app_name”吗?【参考方案2】:

您可以做的是使用路由的第二个参数数组中的as 键为您的路由命名:

Route::get('accounts/create', [
    'as'   => 'accounts.create',
    'uses' => 'AccountController@create'
]);

然后你可以在你的应用程序中通过它的名字来引用这个路由,即使你碰巧改变了 URL,它也会去同一个地方。对于锚标记,您可以执行以下操作:

 URL::route('accounts.create') 

如果您使用的是资源控制器,您可以在 资源控制器处理的操作下看到预定义的路由:http://laravel.com/docs/5.1/controllers#restful-resource-controllers

您始终可以通过运行php artisan route:list 快速了解您的可用路线及其名称

【讨论】:

谢谢这位先生,我可以问一个问题吗?我真的需要在我做的每个应用程序中都做“laravel new app_name”吗? 不客气,谢谢你感谢我。至于你的问题,你说的是使用 laravel 安装程序来创建一个新项目,对吧?如果是这样,是的,你这样做,但仅供参考 cmets 并不是真正提出单独问题的地方。尝试在这里创建一个新问题,或者尝试在 laravel 社区之一中提问,例如 laravel.io 论坛 laracasts.com 论坛或 laravel irc,如果您还有其他问题。谢谢。【参考方案3】:

http://laravel.com/docs/4.2/routing#named-routes

例子:

Route::get('accounts/create', array('as' => 'signup', 'uses' => 'UserController@create'));

<a href="URL::route('signup')">Add user</a>

这条路线被命名为“注册”,您可以随时更改网址:

Route::get('accounts/signup', array('as' => 'signup', 'uses' => 'UserController@create'));

【讨论】:

谢谢先生,我可以问一个问题吗?我真的需要在我做的每个应用程序中都做“laravel new app_name”吗? 还有其他方法可以将 Laravel 设置为:composer create-project laravel/laravel --prefer-dist 但您应该始终使用其中一种进行设置。或者只是将新的 Laravel 副本复制到另一个项目并 composer install。【参考方案4】:

是的,您可以使用 action() 助手调用控制器内的方法并根据需要自动生成到它的路由。

假设你有一个名为 FrontendController.php 的控制器和一个名为 showFrontend($section) 的方法,并假设你有一个匹配这个控制器和方法的路由(比如说“frontend/show/$section” ,您可以调用:

action('FrontendController@showFrontend', array( 'index' ) )

这将返回:

frontend/show/index

所以基本上它会寻找与该方法/控制器关联的路由。您可以将它与其他帮助程序结合起来创建一个完整的 URL。

注意:考虑命名空间,以防控制器、嵌套资源等使用不同的文件夹。

希望对你有帮助!

【讨论】:

谢谢这位先生,我可以问一个问题吗?我真的需要在我做的每个应用程序中都做“laravel new app_name”吗? 该命令只是创建 Laravel 包的全新安装。您可以使用该命令创建一个基于 laravel 的新项目,也可以使用 composer,或者您可以从 Github 下载代码并将其放置在您想要的任何位置等...您可以在此处找到更多信息:@987654321 @

以上是关于Laravel href 重定向的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 重定向返回导致重定向循环

如何从刀片模板中的 Javascript 文件重定向 Laravel 路由

登录vue和laravel后如何重定向回上一页?

Laravel 重定向离开方法重定向到自己的域

重定向进入空白页面而不重定向到路由 Laravel 5.8

Laravel - 以 .php 结尾的重定向捕获/重定向 URL