对于数据表,我必须使用REST API。
我的网址是例如: http://localhost:8000/trial/1
在此页面中进行api调用我使用以下内容:
url: "rest->{{ path('erp_interventionapi_get') }}",
我需要获取attribut id =“1”来进行正确的调用(在数据库中通过id查找),但我不知道如何获取它。
我试过这个
/**
* @Rest\Get("/api_i/get")
*/
public function getAction(Request $request)
{
$id = $request->attributes->get('id');
$em = $this->getDoctrine()->getManager();
$trial = $em->find('ErpBundle:Trial', $id);
return $em->getRepository('ErpBundle:Intervention')->findBy(array('trial' => $trial));
}
但是我有这条错误消息:
ErpBundle \ Entity \ Trial
的查询缺少标识符ID
以下情况也不起作用:
/**
* @Rest\Get("/api_i/get")
*/
public function getAction($id)
{
$em = $this->getDoctrine()->getManager();
$trial = $em->find('ErpBundle:Trial', $id);
return $em->getRepository('ErpBundle:Intervention')->findBy(array('trial' => $trial));
}
我想是因为它试图从url / api_i / get中检索id而不是从网页本身检索id。
那么可以从我调用API的url中获取属性吗?
对不起,如果我在说话的方式上犯了错误,我对此仍然很陌生:)
提前感谢您的帮助!
答案 0 :(得分:0)
您需要在路径功能中设置ID:
{{ path('erp_interventionapi_get', {id: app.request.attributes.get('id')}) }}
答案 1 :(得分:0)
我的假设是你传递了Trial对象(作为列表或单个对象),所以当你使用Symfony的Twig函数path()
时(注意,这不是一个Twig函数,它来自Symfony的Twig包),你需要传入id:
{{ path('erp_interventionapi_get', { id: trial.id }) }}
或者,或者:
{% for trial in trials %}
{{ path('erp_interventionapi_get', { id: trial.id }) }}
{% endfor %}
https://symfony.com/doc/current/templating.html#linking-to-pages
注意,如果您将此输出为基于SPA或基于窗口小部件的消费的JSON,我建议将其作为客户端路由器策略进行输出,例如,使用序列化数据在客户端上构建路由(无嵌入式URL)。例如,在Backbone中你会告诉它如何"得到"到像这样的资源:
this.route("trial/:id", "trial", function(id){ ... });