20

有人可以解释 Laravel 4 UrlGenerator 类的语法吗?我在文档中找不到它。

我有以下路线:

Route::resource('users', 'UsersController');

我花了很长时间才弄清楚这一点:

{{ Url::action('UsersController@show', ['users' => '123']) }}

生成所需的 html:

http://localhost/l4/public/users/123

我查看了 UrlGenerator.php

/**
 * Get the URL to a controller action.
 *
 * @param  string  $action
 * @param  mixed   $parameters
 * @param  bool    $absolute
 * @return string
 */
public function action($action, $parameters = array(), $absolute = true)

..但这并没有真正让我走得更远。

我可以通过$parameters什么?

我现在知道这['users' => '123']行得通,但是这是什么背景?还有其他传递数据的方法吗?

4

3 回答 3

20

您实际上不需要将参数的名称作为数组的键。据我所知,如果没有提供名称,替换将从左到右进行。

例如,您的资源控制器路由定义将如下所示:

/users/{users}

因此,URL::action('UsersController@show', ['123'])生成的 URL like 将生成 URL localhost/project/public/users/123,就像它已经为您生成的一样。

因此,您传入的是正确生成 URL 所需的参数。如果资源是嵌套的,则定义可能如下所示。

/users/{users}/posts/{posts}

要生成 URL,您需要同时传递用户 ID 和帖子 ID。

URL::action('UsersPostsController@show', ['123', '99']);

URL 看起来像localhost/project/public/users/123/posts/99

于 2013-04-22T07:58:17.683 回答
11

那么在使用资源时有一种更好的生成 URL 的方法。

URL::route('users.index') // Show all users links to UserController@index

URL::route('users.show',$user->id) // Show user with id links to UserController@show($id)

URL::route('users.create') // Show Userform links to UserController@create

URL::route('users.store') // Links to UserController@store

URL::route('users.edit',$user->id) // Show Editform links to UserController@edit($id)

URL::route('users.update',$user->id) // Update the User with id links to UserController@update($id)

URL::route('users.destroy',$user->id) // Deletes a user with the id links to UserController@destroy

希望这能说明问题。可以在这里找到一些文档http://laravel.com/docs/controllers#resource-controllers

于 2013-07-03T08:29:05.840 回答
3

对于那些使用 PHP 5.3 的人来说,这应该是:

URL::action('UsersController@show', array('123') )
于 2013-06-24T00:09:48.447 回答