Saya menggunakan PartKeepr 1.3.0
Saya memiliki masalah dengan memindai kode batang untuk membuka dialog modifikasi bagian.
Saya membuat Barcode dengan Prefix "PID-"+The Part Unique ID
Saya mengatur kode "PID-" di PartKeepr dengan "Search Part" sebagai Action, dan kemudian memilih PartKeepr.PartBundle.Entity.Part. @id sebagai Bidang Pencarian.
Saya dapat memindai kode batang lain untuk Lokasi Penyimpanan dan yang membuka kueri untuk bagian di lokasi seperti yang diharapkan. Ini tampaknya khusus untuk Pencarian Bagian.
Ketika saya memindai kode batang misalnya "PID-12" PartKeepr merespons pemindaian tetapi menampilkan kesalahan berikut:
[Kesalahan Sintaks] baris 0, col 83: Kesalahan: Diharapkan =, <, <=, <>, >, >=, !=, mendapat 'id'
DAPATKAN http://192.168.0.196/parts/web/api/parts?_dc=1510689688405
500
{"@context":"\/parts\/web\/api\/contexts\/Error","@type":"Error"," hydra:title ":"Terjadi kesalahan"," hydra:description " :"[Kesalahan Sintaks] baris 0, col 83: Kesalahan: Diharapkan =, \u003C, \u003C=, \u003C\u003E, \u003E, \u003E=, !=, mendapat \u0027id\u0027"}
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: benar
maxUploadSize: 2097152
isOctoPartAvailable: salah
tersediaImageFormats: JPG, GIF, PNG
max_users: tidak terbatas
otentikasi_provider: PartKeepr.Auth.HTTPBasicAuthenticationProvider
tip_of_the_day_uri: https://partkeepr.org/tips/%s
password_change: benar
patreonStatus: [Objek Obyek]
Saya pikir saya tahu apa yang terjadi di sini tetapi tidak tahu bagaimana menyelesaikannya. Tampaknya @ sedang ditambahkan ke variabel id dalam permintaan GET.
Ketika itu terjadi kesalahan terjadi, jika saya mengubah permintaan get dan menghapus simbol @ itu saya mendapatkan respons yang terlihat seperti ini:
{"@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":[]}}
Ini sepertinya mengembalikan respons yang benar yang memberi tahu UI untuk menjalankan kueri pencarian ...?
Jadi saya kira pertanyaannya adalah bagaimana kita bisa membatasi @ ini agar tidak dimasukkan dalam kueri GET pada pemindaian barcode?
Ok, meskipun ini bukan solusi, saya memang menemukan solusi.
Saya harus memodifikasi file berikut dan semuanya berfungsi sekarang, saya dapat memindai id item dan pencarian berfungsi seperti yang diharapkan:
/src/PartKeepr/DoctrineReflectionBundle/Filter/AdvancedSearchFilter.php
Ubah baris 353 Dari:
$filter->setProperty($data->property);
Ke:
$filter->setProperty(str_replace("@","",$data->property));
Pada dasarnya simbol @ yang menyebabkan masalah dan perlu dihapus dari permintaan GET Ajax. Saya tidak yakin di mana harus melakukan perubahan itu, tetapi melakukan hal di atas berhasil bagi saya sebagai perbaikan sementara sampai seseorang dapat berpadu tentang bagaimana mencapai ini dengan benar ...
Punya masalah yang sama, sepertinya sama dengan https://github.com/partkeepr/PartKeepr/issues/894
Solusi yang lebih baik adalah mengganti nama properti secara langsung di src/PartKeepr/DoctrineReflectionBundle/Filter/AssociationPropertyTrait.php
public function setProperty($property)
{
$this->property = str_replace("@", "", $property);
}
Komentar yang paling membantu
Solusi yang lebih baik adalah mengganti nama properti secara langsung di
src/PartKeepr/DoctrineReflectionBundle/Filter/AssociationPropertyTrait.php