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 重定向的主要内容,如果未能解决你的问题,请参考以下文章