Partkeepr: 使用部件 ID 时扫描错误

创建于 2017-11-14  ·  4评论  ·  资料来源: partkeepr/PartKeepr

我正在使用 PartKeepr 1.3.0

我在扫描条形码以打开修改零件对话框时遇到问题。

我创建了带有前缀“PID-”+零件唯一 ID 的条形码

我在 PartKeepr 中设置代码“PID-”,以“Search Part”作为操作,然后选择 PartKeepr.PartBundle.Entity.Part。 @id作为搜索字段。

我能够扫描存储位置的其他条码,并按预期打开该位置中零件的查询。 这似乎特定于部件查找。

当我扫描条形码时,例如“PID-12”PartKeepr 响应扫描但显示以下错误:

细节

[语法错误] 第 0 行,第 83 列:错误:预期 =、<、<=、<>、>、>=、!=,得到 'id'

要求

获取http://192.168.0.196/parts/web/api/parts?_dc=1510689688405

响应状态码

500

回复

{"@context":"\/parts\/web\/api\/contexts\/Error","@type":"Error"," hydra:title ":"发生错误"," hydra:description " :"[语法错误] 第 0 行,第 83 列:错误:预期 =,\u003C,\u003C=,\u003C\u003E,\u003E,\u003E=,!=,得到 \u0027id\u0027"}

服务器配置

学说_orm_version:2.5.4
学说_dbal_version:2.5.2
学说_common_version:2.6.0-DEV
php_version: 7.0.22-0ubuntu0.16.04.1
auto_start_session: 真
最大上传大小:2097152
isOctoPartAvailable: 假
可用图片格式:JPG、GIF、PNG
max_users: 无限制
authentication_provider:PartKeepr.Auth.HTTPBasicAuthenticationProvider
tip_of_the_day_uri: https ://partkeepr.org/tips/%s
密码更改:真
patreonStatus: [对象对象]

最有用的评论

更好的解决方法是直接在src/PartKeepr/DoctrineReflectionBundle/Filter/AssociationPropertyTrait.php替换属性名称

public function setProperty($property)
{
    $this->property = str_replace("@", "", $property);
}

所有4条评论

我想我知道这里发生了什么,但不知道如何解决。 似乎在 GET 请求中的 id 变量前面加上了 @。

发生这种情况时会发生错误,如果我修改 get 请求并删除该 @ 符号,我会得到如下所示的响应:

{"@context":"\/parts\/web\/api\/contexts\/Part","@id":"\/parts\/web\/api\/parts?_dc=1510773608949\u0026page=1\u0026start=0\u0026itemsPerPage=50\u0026group={"property":"categoryPath","direction":"ASC"}\u0026order=[{"property":"category.categoryPath","direction":"ASC"},{"property":"name","direction":"ASC"}]\u0026filter=[{"subfilters":[{"subfilters":[],"property":"id","operator":"LIKE","value":"43W"}],"type":"OR"}]","@type":"hydra:PagedCollection","hydra:totalItems":0,"hydra:itemsPerPage":50,"hydra:firstPage":"\/parts\/web\/api\/parts?_dc=1510773608949\u0026start=0\u0026itemsPerPage=50\u0026group={"property":"categoryPath","direction":"ASC"}\u0026order=[{"property":"category.categoryPath","direction":"ASC"},{"property":"name","direction":"ASC"}]\u0026filter=[{"subfilters":[{"subfilters":[],"property":"id","operator":"LIKE","value":"43W"}],"type":"OR"}]","hydra:lastPage":"\/parts\/web\/api\/parts?_dc=1510773608949\u0026start=0\u0026itemsPerPage=50\u0026group={"property":"categoryPath","direction":"ASC"}\u0026order=[{"property":"category.categoryPath","direction":"ASC"},{"property":"name","direction":"ASC"}]\u0026filter=[{"subfilters":[{"subfilters":[],"property":"id","operator":"LIKE","value":"43W"}],"type":"OR"}]","hydra:member":[],"hydra:search":{"@type":"hydra:IriTemplate","hydra:template":"\/parts\/web\/api\/parts{?}","hydra:variableRepresentation":"BasicRepresentation","hydra:mapping":[]}}

看起来它返回了正确的响应,告诉 UI 调用查找查询......?

所以我想问题是我们如何限制这个@ 被包含在条形码扫描的 GET 查询中?

好吧,尽管这不是解决方案,但我确实找到了解决方法。

我不得不修改以下文件,现在一切正常,我可以扫描项目 ID 并且查找按预期工作:

/src/PartKeepr/DoctrineReflectionBundle/Filter/AdvancedSearchFilter.php

修改第 353 行来自:

$filter->setProperty($data->property);
到:
$filter->setProperty(str_replace("@","",$data->property));

基本上是@ 符号导致了问题,需要从 GET Ajax 请求中删除它。 我不确定在哪里进行更改,但是上述操作确实对我有用,可以作为临时修复,直到有人可以就如何正确实现这一点发表意见......

遇到了同样的问题,好像和https://github.com/partkeepr/PartKeepr/issues/894 一样

更好的解决方法是直接在src/PartKeepr/DoctrineReflectionBundle/Filter/AssociationPropertyTrait.php替换属性名称

public function setProperty($property)
{
    $this->property = str_replace("@", "", $property);
}
此页面是否有帮助?
0 / 5 - 0 等级

相关问题

HolgerHeckeroth picture HolgerHeckeroth  ·  4评论

michielbrink picture michielbrink  ·  7评论

kgabryszewska picture kgabryszewska  ·  8评论

WickedAx picture WickedAx  ·  11评论

gfarcas picture gfarcas  ·  20评论