【问题标题】:Laravel href redirectionLaravel href 重定向
【发布时间】: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


【解决方案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 @
猜你喜欢
  • 2019-12-20
  • 1970-01-01
  • 2014-03-17
  • 2021-08-24
  • 2016-07-05
  • 2018-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多