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

Posted

技术标签:

【中文标题】将两个值传递给嵌套的 restful 控制器【英文标题】:Passing two values to the nested restful controller 【发布时间】:2013-11-06 10:46:52 【问题描述】:

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

public function show($postId, $commentsId)


// code


生成的url应该是这样的

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.

【问题讨论】:

URL::route 的第二个参数应该是一个参数数组。请参阅:laravel.com/api/… - 这意味着您的代码应类似于 URL::route('posts.comments.show', [value1, value2]) 【参考方案1】:

你可以通过声明额外的路线来做到这一点。

你应该有这样的东西:

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))

【讨论】:

感谢您的回复,但是通过在 cmd 中运行php artisan routes,我可以看到路由结构已经是您提到的创建。我认为问题出在 url 从中发送值或调用 route->controller 方法之类的问题上。我的问题更具体,例如:通过运行诸如&lt;a href=" URL::route('posts.comments.show', value1, value2) "&gt; &lt;h3&gt; Click &lt;/h3&gt;&lt;/a&gt;' Because it is just generating an url like : localhost/posts/1/comments` cmets 参数的缩写之类的锚标记方法来调用嵌套 url 控制器是否正确。 我明白了。我更新了我的答案,使用 'URL::route('posts.cmets.show', array(value1, value2))' @FDL 已经解决了这个数组错误!我已经发布了完整的编辑。的链接。感谢您的支持!【参考方案2】:

现在这个问题解决了。我在此处添加此答案,因为它可能会帮助您解决此类问题。 我要感谢@FDL 的大力支持,还要感谢@kasys。

我在生成 url 时对@kasys(@FDL 解决了这个问题)的评论中猜到了,我在那里犯了一个错误。

这种情况下url生成方式应该是这样的

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

这里value1 表示帖子的ID,value2 表示cmets 的ID,因此此链接生成的url 为->

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

感谢@FDL 和所有参与这里的恶魔。很快,一个网站将震撼世界。需要你的祝福的朋友:)谢谢!

【讨论】:

以上是关于将两个值传递给嵌套的 restful 控制器的主要内容,如果未能解决你的问题,请参考以下文章

React useContext 不会将值传递给深层嵌套的子级

如何通过控制器将两个不同模型的值作为 Laravel 8 中的单个返回变量传递给视图文件

如何将函数从父级传递给深层嵌套的子级并将@input 值用于Angular 8中传递的函数?

将 Html.DropDownList 的选定值传递给控制器

如何在spring mvc中将嵌套列表元素传递给控制器

将 indexpath 值传递给 FirstViewController