with route resource make compact php laravel laravel-4 restful-url

php - route - return view with parameters laravel 5



Laravel 4: ¿cómo escribir el controlador anidado correcto para el recurso anidado? (1)

En Laravel 4, deseo crear un conjunto de recursos relajantes de la siguiente manera:

http://localhost/posts/1/comments http://localhost/posts/1/comments/1 http://localhost/posts/1/comments/1/edit

...
Así que creé dos controladores: PostsController y CommentsController (en la misma capa), y las rutas se escriben de la siguiente manera:

Route::resource(''posts'', ''PostsController''); Route::resource(''posts.comments'', ''CommentsController'');

También creé un enlace en /views/comments/index.blade.php que se refiere a las rutas: posts.comments.create

{{ link_to_route(''posts.comments.create'', ''Add new comment'') }}

Aquí está el problema que conocí:

Cuando visito http://localhost/posts/1/comments , la página arroja MissingMandatoryParametersException , que indica:

Faltan algunos parámetros obligatorios ("publicaciones") para generar una URL para la ruta "posts.comments.create".

¿Cómo puedo solucionar el problema y cómo puedo saber si la solución también se aplica a los métodos de creación y edición en CommentsController?

p.ej

public function index() { $tasks = $this->comment->all(); return View::make(''comments.index'', compact(''comments'')); } public function create() { return View::make(''comments.create''); } public function show($post_id,$comment_id) { $comment = $this->comment->findOrFail($comment_id); return View::make(''comments.show'', compact(''comment'')); }


Estoy usando controladores anidados en dos proyectos, los amo. El problema parece estar en su controlador y enlace de ruta.

En CommentsController, falta $ post_id. Haz algo como esto:

public function create($post_id) { return View::make(''comments.create'') ->with(''post_id'', $post_id); }

Al crear enlaces a un controlador anidado, se deben proporcionar las ID de todos los antepasados. En este caso, falta el $ post_id. Es posible que deba ponerlo a disposición de su vista si aún no lo está.

{{ HTML::linkRoute(''posts.comments.create'', ''Add new comment'', $post_id) }}