[ „type” => „int”, „backend” => '', „frontend” => '', „label” => „XXXX”, „input” => „text”, „frontend_class” => 'validate-more-than-zero', „source” => '', 'global' => \ Magento \ Eav \ Model \ Entity \ Attribute \ ScopedAttributeInterface :: SCOPE_GLOBAL, „widoczne” => prawda, „wymagane” => prawda, 'user_defined' => false, „default” => 0, „searchable” => false, „filterable” => true, „porównywalne” => fałsz, 'visible_on_front' => false, 'used_in_product_listing' => true, „unikalny” => fałsz ]
Dodaję niestandardowy atrybut produktu, który działa dobrze, ale nie można dodać validate-greater-than-zero
sprawdzania poprawności.
Jeśli spojrzymy na dowolne właściwości atrybutu, Input Validation for Store Owner
istnieje ograniczona liczba walidacji w wybranych opcjach.
validate-number
, validate-digits
, validate-email
, validate-url
, validate-alpha
,validate-alphanum
Są to jedyne walidacje zastosowane w sekcji Atrybut produktu.
magento2
javascript
jquery
form-validation
knockoutjs
Amit Singh
źródło
źródło
Odpowiedzi:
Jednym z rozwiązań jest dodanie
backend model
do atrybutu atrybutu, który służy do formatowania / sprawdzania wartości atrybutu przed zapisaniem i / lub po załadowaniu.Dodaj klasę zaplecza:
Oto przykład Twojej niestandardowej klasy
\Foo\Bar\Model\Attribute\Backend\YourAttribute
Jeśli chcesz prosty przykład tego rodzaju zajęć, możesz to sprawdzić
\Magento\Customer\Model\Customer\Attribute\Backend\Website
\Magento\Eav\Model\Entity\Attribute\Backend\AbstractBackend
backend_model
kolumny weav_attribute
tabeliEDYCJA
Jeśli chcesz mieć klasę, która robi prawie to samo, co chcesz, możesz rzucić okiem na
SKU
sprawdzanie poprawności atrybutu.\Magento\Catalog\Model\Product\Attribute\Backend\Sku
Dodałem również metodę do przykładowej klasy
EDYCJA
Innym rozwiązaniem (może nie najlepszym) jest utworzenie wtyczki do funkcji
\Magento\Eav\Helper\Data::getFrontendClasses
i dodanie tutaj klasy frontendu, którą można zweryfikować z przodu.źródło
eav_attribute
tabeli w kolumnie, czyfrontend_class
to ta wartośćvalidate-greater-than-zero
?validate-number
,validate-digits
,validate-email
,validate-url
,validate-alpha
,validate-alphanum
.Za pomocą
Matthéo Geoffray
tego właśnie zrobiłem, aby zastosować walidację interfejsu użytkownika dla niestandardowych atrybutów.Jest to niestandardowy atrybut w skrypcie instalacyjnym.
Dodałem wtyczkę w di.xml
Oto kod wtyczki.
Zasadniczo
\Magento\Catalog\Ui\DataProvider\CatalogEavValidationRules
, wywoływana metodamapRules
dopasowuje tylko klasę frontend do ograniczonej liczby reguł sprawdzania poprawności. Aby zastosować więcej reguł sprawdzania poprawności, musimy dołączyć reguły przy użyciu wtyczki.Aby sprawdzić poprawność po stronie serwera, zapoznaj się z
Matthéo Geoffray
odpowiedzią.źródło
Nie jestem pewien, czy to możliwe ze skryptu instalacyjnego. Ale jestem pewien, że jest to możliwe, jeśli utworzysz „przed wtyczką nasłuchującą” z funkcją
beforeSave()
i sprawdzisz tam wartość.źródło