Partkeepr: خطأ في المسح عند استخدام معرف الجزء

تم إنشاؤها على ١٤ نوفمبر ٢٠١٧  ·  4تعليقات  ·  مصدر: partkeepr/PartKeepr

أنا أستخدم PartKeepr 1.3.0

لدي مشكلة في مسح الرموز الشريطية لفتح مربع حوار تعديل الجزء.

لقد قمت بإنشاء رموز شريطية ببادئة "PID -" + معرف الجزء الفريد

قمت بإعداد كود "PID-" في PartKeepr مع "جزء البحث" باعتباره الإجراء ، ثم حددت 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"}

تكوين الخادم

Duration_orm_version: 2.5.4
DIPAL_DBAL_Version: 2.5.2
Duration_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: [كائن كائن]

Bug

التعليق الأكثر فائدة

الحل الأفضل هو استبدال اسم الخاصية مباشرة بـ src/PartKeepr/DoctrineReflectionBundle/Filter/AssociationPropertyTrait.php

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

ال 4 كومينتر

أعتقد أنني أعرف ما يحدث هنا ولكن ليس لدي فكرة عن كيفية حلها. يبدو أنه يتم إضافة @ إلى متغير id في طلب GET.

عند حدوث ذلك ، يحدث الخطأ ، إذا قمت بتعديل طلب 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":[]}}

يبدو أن هذا يعرض الاستجابة الصحيحة التي تخبر واجهة المستخدم باستدعاء استعلام بحث ...؟

لذا أعتقد أن السؤال هو كيف يمكننا تقييد هذا @ من تضمينه في استعلام GET في مسح الرمز الشريطي؟

حسنًا ، بقدر ما هذا ليس حلاً ، فقد وجدت حلًا.

اضطررت إلى تعديل الملف التالي وعمل كل شيء الآن ، وأنا قادر على فحص معرف العنصر ويعمل البحث كما هو متوقع:

/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 التقييمات

القضايا ذات الصلة

baradhili picture baradhili  ·  17تعليقات

Gasman2014 picture Gasman2014  ·  26تعليقات

FinalHopee picture FinalHopee  ·  32تعليقات

olewolf picture olewolf  ·  18تعليقات

michielbrink picture michielbrink  ·  7تعليقات