将两个值传递给嵌套的restful控制器

时间:2013-11-06 10:46:53

标签: php laravel restful-url

在我的嵌套restful控制器中,我的show方法应该接收两个像这样的值

public function show($postId, $commentsId)
{

// code

}

生成的网址应该是这样的

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

现在我的查询是:我需要通过我的路线呼叫发送这些twu值

我这样使用:

<a href="{{ URL::route('posts.comments.show', value1, value2) }}"> <h3> Click </h3></a>

但是它给出了这样的错误

Symfony \ Component \ Routing \ Exception \ InvalidParameterException
Parameter "dcoms" for route "debates.dcoms.show" must match "[^/]++" ("" given) to generate a corresponding URL.

2 个答案:

答案 0 :(得分:0)

您可以通过声明其他路线来实现。

你应该有这样的东西:

Route::controller('posts', 'RestController');

尝试在以下行中添加以下内容:

Route::controller('posts/{postId}/comments/{commentsId}', 'RestController@anotherShow');

在你的功能中,你必须为这条路线添加功能:

public function anotherShow($postId, $commentsId)
{

    // code

}

你也改变了你的URL::route

URL::route('posts.comments.show', array(value1, value2))

或者:

URL::route('posts.comments.show', array('postId'=>value1, 'commentsId'=>value2))

答案 1 :(得分:0)

现在这个问题已经解决了。我在这里添加这个答案因为它可能会帮助你解决这类问题。 我要感谢@FDL非常棒的支持以及@kasys。

我在那里做了一个错误,因为我在生成网址时已经猜到@kasys(@FDL解决了这个问题)。

在这种情况下,网址生成方法应该是这样的

<a href="{{ URL::route('posts.comments.show', array(value1, value 2)) }}"><h3>Click this link</h3></a>

此处value1表示帖子的ID,value2表示评论的ID,因此此链接生成的url为 - &gt;

http://localhost/posts/value1/comments/value2

谢谢@FDL以及所有参加此活动的恶魔。不久,一个网站将来到这个世界。需要你的祝福朋友:)谢谢!