route - Laravel 4: ¿Qué pasar como parámetros a la clase Url?
substr laravel (3)
Bueno, hay una mejor manera de generar URL cuando se trabaja con recursos.
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
Espero que eso aclare las cosas. Puede encontrar información sobre esto aquí http://laravel.com/docs/controllers#resource-controllers
¿Alguien puede explicar la sintaxis de la clase Laravel 4 UrlGenerator? No lo encuentro en la documentación.
Tengo la siguiente ruta:
Route::resource(''users'', ''UsersController'');
Me tomó mucho tiempo entender que esto:
{{ Url::action(''UsersController@show'', [''users'' => ''123'']) }}
genera el html deseado:
http://localhost/l4/public/users/123
Miré en 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)
..pero eso realmente no me lleva más lejos.
¿Qué puedo pasar como $parameters
?
Ahora sé que [''users'' => ''123'']
funciona, pero ¿cuál es el fondo de esto? ¿Y hay otras formas de pasar datos?
No es necesario que indique el nombre del parámetro como la clave de la matriz. Los reemplazos sucederán de izquierda a derecha si no se proporcionan nombres, por lo que puedo recordar.
A modo de ejemplo, la definición de ruta de los controladores de recursos tendrá un aspecto similar al siguiente:
/users/{users}
Por lo tanto, una URL generada como URL::action(''UsersController@show'', [''123''])
generará la URL localhost/project/public/users/123
, como ya lo ha hecho para usted.
Entonces, lo que está pasando son los parámetros necesarios para que la URL se genere correctamente. Si el recurso estaba anidado, una definición podría tener este aspecto.
/users/{users}/posts/{posts}
Para generar una URL, deberá pasar tanto el ID de usuario como el ID de publicación.
URL::action(''UsersPostsController@show'', [''123'', ''99'']);
La URL se parecería a localhost/project/public/users/123/posts/99
Para aquellos que usan PHP 5.3, esto debería ser:
URL::action(''UsersController@show'', array(''123'') )