Partkeepr: Fehler beim Scannen bei Verwendung der Teile-ID

Erstellt am 14. Nov. 2017  ·  4Kommentare  ·  Quelle: partkeepr/PartKeepr

Ich verwende PartKeepr 1.3.0

Ich habe ein Problem mit dem Scannen von Barcodes, um das Dialogfeld "Teile ändern" zu öffnen.

Ich habe Barcodes mit dem Präfix "PID-" + der eindeutigen ID des Teils erstellt

Ich habe den Code "PID-" in PartKeepr mit "Search Part" als Aktion eingerichtet und dann PartKeepr.PartBundle.Entity.Part ausgewählt. @id als

Ich kann andere Barcodes für Lagerorte scannen und diese öffnen wie erwartet die Abfrage nach Teilen am Lagerplatz. Dies scheint spezifisch für die Teilesuche zu sein.

Wenn ich einen Barcode zum Beispiel "PID-12" scanne, reagiert PartKeepr auf den Scan, zeigt aber den folgenden Fehler an:

Einzelheiten

[Syntaxfehler] Zeile 0, Spalte 83: Fehler: Erwartet =, <, <=, <>, >, >=, !=, got 'id'

Anfrage

Holen Sie sich http://192.168.0.196/parts/web/api/parts?_dc=1510689688405

Antwortstatuscode

500

Antwort

{"@context":"\/parts\/web\/api\/contexts\/Error","@type":"Fehler"," hydra:title ":"Ein Fehler ist aufgetreten"," hydra:description " :"[Syntaxfehler] Zeile 0, Spalte 83: Fehler: Erwartet =, \u003C, \u003C=, \u003C\u003E, \u003E, \u003E=, !=, got \u0027id\u0027"}

Serverkonfiguration

Doktrin_orm_Version: 2.5.4
Doktrin_dbal_Version: 2.5.2
Doktrin_common_Version: 2.6.0-DEV
php_version: 7.0.22-0ubuntu0.16.04.1
auto_start_session: wahr
maxUploadGröße: 2097152
isOctoPartAvailable: false
verfügbareBildformate: JPG,GIF,PNG
max_users: unbegrenzt
Authentication_Provider: PartKeepr.Auth.HTTPBasicAuthenticationProvider
tip_of_the_day_uri: https://partkeepr.org/tips/%s
password_change: wahr
patreonStatus: [Objekt Objekt]

Bug

Hilfreichster Kommentar

Eine bessere Problemumgehung besteht darin, den Eigenschaftsnamen direkt in src/PartKeepr/DoctrineReflectionBundle/Filter/AssociationPropertyTrait.php zu ersetzen

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

Alle 4 Kommentare

Ich glaube, ich weiß, was hier passiert, aber ich habe keine Ahnung, wie ich das lösen soll. Es scheint, dass der ID-Variablen in der GET-Anforderung ein @ vorangestellt wird.

Wenn das passiert, tritt der Fehler auf, wenn ich die Get-Anfrage ändere und das @-Symbol entferne, erhalte ich eine Antwort, die wie folgt aussieht:

{"@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":[]}}

Dies sieht so aus, als ob es die richtige Antwort zurückgibt, die die Benutzeroberfläche anweist, eine Lookup-Abfrage aufzurufen...?

Ich denke also, die Frage ist, wie wir verhindern können, dass dieses @ in die GET-Abfrage des Barcode-Scans aufgenommen wird?

Ok, auch wenn dies keine Lösung ist, habe ich einen Workaround gefunden.

Ich musste die folgende Datei ändern und alles funktioniert jetzt, ich kann die Artikel-ID scannen und die Suche funktioniert wie erwartet:

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

Zeile 353 ändern von:

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

Im Grunde ist es das @-Symbol, das das Problem verursacht und es muss aus der GET Ajax-Anfrage entfernt werden. Ich bin mir nicht ganz sicher, wo ich diese Änderung vornehmen soll, aber dies hat für mich als vorübergehende Lösung funktioniert, bis sich jemand einmischen kann, wie man dies richtig erreicht ...

Habe das gleiche Problem, scheint das gleiche zu sein wie https://github.com/partkeepr/PartKeepr/issues/894

Eine bessere Problemumgehung besteht darin, den Eigenschaftsnamen direkt in src/PartKeepr/DoctrineReflectionBundle/Filter/AssociationPropertyTrait.php zu ersetzen

public function setProperty($property)
{
    $this->property = str_replace("@", "", $property);
}
War diese Seite hilfreich?
0 / 5 - 0 Bewertungen