有人可以解释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']
有效,但这背景是什么?还有其他传递数据的方法吗?
答案 0 :(得分:20)
实际上并不需要将参数的名称作为数组的键。如果没有提供名字,替换将从左到右发生,据我所知。
例如,您的资源控制器路由定义将如下所示:
/users/{users}
因此,像URL::action('UsersController@show', ['123'])
这样生成的网址会生成网址localhost/project/public/users/123
,就像它已经为您提供的那样。
因此,您传入的是正确生成URL所需的参数。如果资源是嵌套的,那么定义可能看起来像这样。
/users/{users}/posts/{posts}
要生成网址,您需要传递用户ID和帖子ID。
URL::action('UsersPostsController@show', ['123', '99']);
网址看起来像localhost/project/public/users/123/posts/99
答案 1 :(得分: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
找到答案 2 :(得分:3)
对于使用PHP 5.3的用户,应该是:
URL::action('UsersController@show', array('123') )