Partkeepr: Kesalahan Pemindaian saat menggunakan ID bagian

Dibuat pada 14 Nov 2017  ·  4Komentar  ·  Sumber: partkeepr/PartKeepr

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:

rincian

[Kesalahan Sintaks] baris 0, col 83: Kesalahan: Diharapkan =, <, <=, <>, >, >=, !=, mendapat 'id'

Meminta

DAPATKAN http://192.168.0.196/parts/web/api/parts?_dc=1510689688405

Kode Status Tanggapan

500

Tanggapan

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

Konfigurasi Server

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]

Bug

Komentar yang paling membantu

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);
}

Semua 4 komentar

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);
}
Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

gfarcas picture gfarcas  ·  20Komentar

FinalHopee picture FinalHopee  ·  32Komentar

HolgerHeckeroth picture HolgerHeckeroth  ·  4Komentar

christianlupus picture christianlupus  ·  55Komentar

dani2bunny picture dani2bunny  ·  24Komentar