Laravel href重定向

时间:2015-06-09 13:13:34

标签: laravel

所以我开始使用Laravel,我发现它非常简单,现在我正在创建自己的休息服务。我的问题是我不知道我是否正在进行href链接,但是它确实有效。这是代码:

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

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

public function create()
{
    return view('accounts.create');
}

因此,如果我点击添加用户链接,它会将我重定向到localhost:8080/accounts/create,效果很好。我的问题是,有更好的方法吗?就像我在路线文件中改变任何一样,我不会再改变href链接了吗?

4 个答案:

答案 0 :(得分:5)

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

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

您将按如下方式使用

aa
bb
cc

在你看来。

这样,即使您更改了网址(帐户/创建)或操作名称(创建),也不必在视图中更改它。允许您的观点独立。

答案 1 :(得分: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

,您始终可以快速了解可用的路线及其名称

答案 2 :(得分:1)

  

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'));

答案 3 :(得分:1)

是的,您可以使用action()帮助程序调用控制器内的方法,并根据需要自动生成路径。

所以让我们考虑你有一个名为FrontendController.php的控制器和一个名为showFrontend($ section)的方法,并假设你有一个匹配这个控制器和方法的路由(假设你说“frontend / show / {$ section}” ,你可以打电话:

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

那将返回:

frontend/show/index

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

注意:如果您有不同的控制器文件夹,嵌套资源等,请考虑名称空间。

我希望它有所帮助!