将两个值传递给嵌套的 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 方法之类的问题上。我的问题更具体,例如:通过运行诸如<a href=" URL::route('posts.comments.show', value1, value2) "> <h3> Click </h3></a>' 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中传递的函数?