mirror of
https://github.com/Sylius/Sylius.git
synced 2026-07-14 17:10:53 +00:00
Fix: Admin taxon update: Cannot set child as parent to node
This commit is contained in:
parent
717d8da6d1
commit
2519a88fec
39 changed files with 166 additions and 1 deletions
|
|
@ -48,7 +48,7 @@
|
|||
</form>
|
||||
</div>
|
||||
</div>
|
||||
{{ tree.render(taxon.children) }}
|
||||
{{ tree.render(taxon.children.toArray|filter(c => c.id != taxon.id)) }}
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
|
|
|||
|
|
@ -38,5 +38,9 @@
|
|||
|
||||
<service id="sylius.generator.taxon_slug" class="Sylius\Component\Taxonomy\Generator\TaxonSlugGenerator" />
|
||||
<service id="Sylius\Component\Taxonomy\Generator\TaxonSlugGeneratorInterface" alias="sylius.generator.taxon_slug" />
|
||||
|
||||
<service id="sylius.validator.taxon_parent" class="Sylius\Bundle\TaxonomyBundle\Validator\TaxonParentValidator">
|
||||
<tag name="validator.constraint_validator" alias="sylius_taxon_parent_validator" />
|
||||
</service>
|
||||
</services>
|
||||
</container>
|
||||
|
|
|
|||
|
|
@ -13,6 +13,11 @@
|
|||
|
||||
<constraint-mapping xmlns="http://symfony.com/schema/dic/constraint-mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symfony.com/schema/dic/constraint-mapping http://symfony.com/schema/dic/services/constraint-mapping-1.0.xsd">
|
||||
<class name="Sylius\Component\Taxonomy\Model\Taxon">
|
||||
<constraint name="Sylius\Bundle\TaxonomyBundle\Validator\Constraints\TaxonParent">
|
||||
<option name="groups">
|
||||
<value>sylius</value>
|
||||
</option>
|
||||
</constraint>
|
||||
<property name="translations">
|
||||
<constraint name="Valid" />
|
||||
</property>
|
||||
|
|
|
|||
|
|
@ -14,6 +14,8 @@ sylius:
|
|||
slug:
|
||||
not_blank: يرجى إدخال الاسم المختصر للتصنيف.
|
||||
unique: يجب أن يكون الاسم المختصر للتصنيف فريدًا.
|
||||
parent:
|
||||
is_invalid: 'لا يمكنك تعيين تصنيف فرعي كتصنيف رئيسي.'
|
||||
taxonomy:
|
||||
name:
|
||||
max_length: يجب ألا يكون اسم التصنيف أطول من 255 حرفًا.
|
||||
|
|
|
|||
|
|
@ -6,6 +6,8 @@ sylius:
|
|||
name:
|
||||
max_length: Назва катэгорыі не можа быць даўжэй за 255 сімвалаў.
|
||||
not_blank: Калі ласка, увядзіце назву катэгорыі.
|
||||
parent:
|
||||
is_invalid: 'Немагчыма прызначыць падпарадкаваны таксон як бацькоўскі таксон.'
|
||||
taxonomy:
|
||||
name:
|
||||
max_length: Назва катэгорыі не можа быць даўжэй за 255 сімвалаў.
|
||||
|
|
|
|||
|
|
@ -13,6 +13,8 @@ sylius:
|
|||
slug:
|
||||
not_blank: Моля, въведете слъг на категорията.
|
||||
unique: Слъг на категорията трябва да е уникален.
|
||||
parent:
|
||||
is_invalid: 'Не можете да зададете дъщерен таксон като родителски таксон.'
|
||||
taxonomy:
|
||||
name:
|
||||
max_length: Името на категорията не трябва да бъде по-дълго от 255 знака.
|
||||
|
|
|
|||
|
|
@ -13,6 +13,8 @@ sylius:
|
|||
slug:
|
||||
not_blank: Prosím vložte slug taxonu.
|
||||
unique: Slug taxonu musí být unikátní.
|
||||
parent:
|
||||
is_invalid: 'Nelze přiřadit podřízený taxon jako nadřazený taxon.'
|
||||
taxonomy:
|
||||
name:
|
||||
max_length: Název taxonomie nesmí být delší než 255 znaků.
|
||||
|
|
|
|||
|
|
@ -13,6 +13,8 @@ sylius:
|
|||
slug:
|
||||
not_blank: Angiv taksonomi slug.
|
||||
unique: Taksonomi slug skal være unik.
|
||||
parent:
|
||||
is_invalid: 'Du kan ikke tildele en underordnet taxon som en overordnet taxon.'
|
||||
taxonomy:
|
||||
name:
|
||||
max_length: Taksonominavn må ikke være længere end 255 tegn.
|
||||
|
|
|
|||
|
|
@ -13,6 +13,8 @@ sylius:
|
|||
slug:
|
||||
not_blank: Bitte eine Kategorie SEO-URL angeben.
|
||||
unique: SEO-URL der Kategorie muss eindeutig sein.
|
||||
parent:
|
||||
is_invalid: 'Ein untergeordneter Taxon kann nicht als übergeordneter Taxon zugewiesen werden.'
|
||||
taxonomy:
|
||||
name:
|
||||
max_length: Name darf nicht länger als 255 Zeichen sein.
|
||||
|
|
|
|||
|
|
@ -13,6 +13,8 @@ sylius:
|
|||
slug:
|
||||
not_blank: Bitte eine Kategorie SEO-URL angeben.
|
||||
unique: SEO-URL der Kategorie muss eindeutig sein.
|
||||
parent:
|
||||
is_invalid: 'Ein untergeordneter Taxon kann nicht als übergeordneter Taxon zugewiesen werden.'
|
||||
taxonomy:
|
||||
name:
|
||||
max_length: Name darf nicht länger als 255 Zeichen sein.
|
||||
|
|
|
|||
|
|
@ -13,6 +13,8 @@ sylius:
|
|||
slug:
|
||||
not_blank: Παρακαλώ εισάγετε ένα μοναδικό αναγνωριστικό (slug) την ταξινομική κατηγορία.
|
||||
unique: Υπάρχει ήδη ταξινομική κατηγορία με αυτό το αναγνωριστικό (slug).
|
||||
parent:
|
||||
is_invalid: 'Δεν μπορείτε να ορίσετε έναν θυγατρικό ταξινομικό όρο ως γονικό ταξινομικό όρο.'
|
||||
taxonomy:
|
||||
name:
|
||||
max_length: Το όνομα ταξινομικής κατηγορίας δεν πρέπει να είναι μεγαλύτερο από 255 χαρακτήρες.
|
||||
|
|
|
|||
|
|
@ -14,6 +14,8 @@ sylius:
|
|||
slug:
|
||||
not_blank: Please enter taxon slug.
|
||||
unique: Taxon slug must be unique.
|
||||
parent:
|
||||
is_invalid: 'You cannot assign a child taxon as a parent taxon.'
|
||||
taxonomy:
|
||||
name:
|
||||
max_length: Taxonomy name must not be longer than 255 characters.
|
||||
|
|
|
|||
|
|
@ -13,6 +13,8 @@ sylius:
|
|||
slug:
|
||||
not_blank: Por favor, introduzca el slug del taxón.
|
||||
unique: El slug del taxón debe ser único.
|
||||
parent:
|
||||
is_invalid: 'No se puede asignar un taxón hijo como taxón padre.'
|
||||
taxonomy:
|
||||
name:
|
||||
max_length: El nombre de la taxonomía no debe ser más largo de 255 caracteres.
|
||||
|
|
|
|||
|
|
@ -13,6 +13,8 @@ sylius:
|
|||
slug:
|
||||
not_blank: لطفا علامت دسته را وارد کنید.
|
||||
unique: علامت دسته باید یکتا باشد.
|
||||
parent:
|
||||
is_invalid: 'نمیتوانید یک رده فرزند را به عنوان رده والد اختصاص دهید.'
|
||||
taxonomy:
|
||||
name:
|
||||
max_length: رده نباید بیش از 255 حرف باشد.
|
||||
|
|
|
|||
|
|
@ -13,6 +13,8 @@ sylius:
|
|||
slug:
|
||||
not_blank: Veuillez entrer le slug du taxon.
|
||||
unique: Le slug du taxon doit être unique.
|
||||
parent:
|
||||
is_invalid: 'Vous ne pouvez pas attribuer un taxon enfant comme taxon parent.'
|
||||
taxonomy:
|
||||
name:
|
||||
max_length: La taxonomie ne peux dépasser les 255 caractères.
|
||||
|
|
|
|||
|
|
@ -13,6 +13,8 @@ sylius:
|
|||
slug:
|
||||
not_blank: Molimo unesite slug kategorije.
|
||||
unique: Slug kategorije mora biti jedinstven.
|
||||
parent:
|
||||
is_invalid: 'Ne možete dodijeliti podređeni takson kao nadređeni takson.'
|
||||
taxonomy:
|
||||
name:
|
||||
max_length: Naziv kategorije ne smije biti duži od 255 znakova.
|
||||
|
|
|
|||
|
|
@ -13,6 +13,8 @@ sylius:
|
|||
slug:
|
||||
not_blank: Kérem adja meg a taxon url kompatibilis megnevezését.
|
||||
unique: A taxon url kompatibilis megnevezésének egyedinek kell lennie.
|
||||
parent:
|
||||
is_invalid: 'Egy alárendelt taxont nem lehet szülő taxonként hozzárendelni.'
|
||||
taxonomy:
|
||||
name:
|
||||
max_length: A taxonómia neve nem lehet hosszabb 255 karakternél.
|
||||
|
|
|
|||
|
|
@ -13,6 +13,8 @@ sylius:
|
|||
slug:
|
||||
not_blank: Silahkan masukkan siput tanpa pamrih.
|
||||
unique: Siput taksi harus unik.
|
||||
parent:
|
||||
is_invalid: 'Anda tidak dapat menetapkan takson anak sebagai takson induk.'
|
||||
taxonomy:
|
||||
name:
|
||||
max_length: Nama taksonomi tidak boleh lebih dari 255 karakter.
|
||||
|
|
|
|||
|
|
@ -13,6 +13,8 @@ sylius:
|
|||
slug:
|
||||
not_blank: Vinsamlega sláðu inn vefslóðarheiti vöruflokks.
|
||||
unique: Vefslóðarheiti vöruflokks verður að vera einstakt.
|
||||
parent:
|
||||
is_invalid: 'Ekki er hægt að úthluta barnataxoni sem foreldrataxoni.'
|
||||
taxonomy:
|
||||
name:
|
||||
max_length: Nafn flokkunarkerfis má ekki vera lengra en 255 stafir.
|
||||
|
|
|
|||
|
|
@ -13,6 +13,8 @@ sylius:
|
|||
slug:
|
||||
not_blank: Inserisci lo il SEO-URL della classe tassa
|
||||
unique: Il SEP-URL della classe tassa deve essere unico.
|
||||
parent:
|
||||
is_invalid: 'Non è possibile assegnare un taxon figlio come taxon genitore.'
|
||||
taxonomy:
|
||||
name:
|
||||
max_length: Il nome della tassonomia non deve essere più lungo di 255 caratteri.
|
||||
|
|
|
|||
|
|
@ -9,6 +9,8 @@ sylius:
|
|||
name:
|
||||
max_length: Taksono pavadinimas neturi būti ilgesnis nei 255 simboliai.
|
||||
not_blank: Įveskite taksono pavadinimą.
|
||||
parent:
|
||||
is_invalid: 'Negalite priskirti vaikų taksono kaip tėvinio taksono.'
|
||||
taxonomy:
|
||||
name:
|
||||
max_length: Taksonomijos pavadinimas neturi būti ilgesnis kaip 255 simboliai.
|
||||
|
|
|
|||
|
|
@ -13,6 +13,8 @@ sylius:
|
|||
slug:
|
||||
not_blank: Таксоны эмхэлсэн холбоосыг оруулна уу.
|
||||
unique: Таксоны эмхэлсэн холбоос давтагдашгүй байх ёстой.
|
||||
parent:
|
||||
is_invalid: 'Хүүхдийн таксоныг эцэг таксон болгон оноох боломжгүй.'
|
||||
taxonomy:
|
||||
name:
|
||||
max_length: Таксонимийн нэр 255 тэмдэгтээс ихгүй байх ёстой.
|
||||
|
|
|
|||
|
|
@ -13,6 +13,8 @@ sylius:
|
|||
slug:
|
||||
not_blank: Gelieve een korte naam in te vullen.
|
||||
unique: Taxon korte naam moet uniek zijn.
|
||||
parent:
|
||||
is_invalid: 'U kunt geen kindtaxon toewijzen als een oudertaxis.'
|
||||
taxonomy:
|
||||
name:
|
||||
max_length: Taxonomienaam mag niet langer zijn dan 255 karakters.
|
||||
|
|
|
|||
|
|
@ -10,6 +10,8 @@ sylius:
|
|||
name:
|
||||
max_length: Taksonominavn kan ikke være lengre enn 255 tegn.
|
||||
not_blank: Angi taksonominavn.
|
||||
parent:
|
||||
is_invalid: 'Du kan ikke tildele en barnetaxon som en foreldretaxon.'
|
||||
taxonomy:
|
||||
name:
|
||||
max_length: Taksonominavn kan ikke være lengre enn 255 tegn.
|
||||
|
|
|
|||
|
|
@ -13,6 +13,8 @@ sylius:
|
|||
slug:
|
||||
not_blank: Wprowadź fragment URL kategorii.
|
||||
unique: Fragment URL kategorii musi być unikalny.
|
||||
parent:
|
||||
is_invalid: 'Nie można przypisać potomnego taksonu jako taksonu nadrzędnego.'
|
||||
taxonomy:
|
||||
name:
|
||||
max_length: Nazwa taksonomii nie może być dłuższa niż 255 znaków.
|
||||
|
|
|
|||
|
|
@ -10,6 +10,8 @@ sylius:
|
|||
name:
|
||||
max_length: O nome do táxon não deve ter mais que 255 caracteres.
|
||||
not_blank: Por favor, digite o nome do táxon.
|
||||
parent:
|
||||
is_invalid: 'Não é possível atribuir um táxon filho como táxon pai.'
|
||||
taxonomy:
|
||||
name:
|
||||
max_length: O nome da taxonomia não deve ter mais que 255 caracteres.
|
||||
|
|
|
|||
|
|
@ -13,6 +13,8 @@ sylius:
|
|||
slug:
|
||||
not_blank: Por favor, digite o slug da Categoria.
|
||||
unique: Slug da Categoria deve ser único.
|
||||
parent:
|
||||
is_invalid: 'Você não pode atribuir um táxon filho como táxon pai.'
|
||||
taxonomy:
|
||||
name:
|
||||
max_length: Nome da Categoria não deve ser maior que 255 caracteres.
|
||||
|
|
|
|||
|
|
@ -13,6 +13,8 @@ sylius:
|
|||
slug:
|
||||
not_blank: Vă rugăm să completați slugul taxonului.
|
||||
unique: Valoarea din câmpul "slug" trebuie să fie unică.
|
||||
parent:
|
||||
is_invalid: 'Nu puteți atribui un taxon copil ca taxon părinte.'
|
||||
taxonomy:
|
||||
name:
|
||||
max_length: Numele categorizării nu poate depăși 255 de caractere.
|
||||
|
|
|
|||
|
|
@ -13,6 +13,8 @@ sylius:
|
|||
slug:
|
||||
not_blank: Пожалуйста, введите псевдоним для категории.
|
||||
unique: Псевдоним для категории должен быть уникальным.
|
||||
parent:
|
||||
is_invalid: 'Нельзя назначить дочерний таксон в качестве родительского таксона.'
|
||||
taxonomy:
|
||||
name:
|
||||
max_length: Название категории не должно быть длиннее 255 символов.
|
||||
|
|
|
|||
|
|
@ -13,6 +13,8 @@ sylius:
|
|||
slug:
|
||||
not_blank: Prosím, zadajte "slug" kategórie.
|
||||
unique: '"Slug" kategórie musí byť jedinečný.'
|
||||
parent:
|
||||
is_invalid: 'Nie je možné priradiť podriadený taxón ako nadradený taxón.'
|
||||
taxonomy:
|
||||
name:
|
||||
max_length: Názov triedenia nesmie byť dlhší ako 255 znakov.
|
||||
|
|
|
|||
|
|
@ -9,6 +9,8 @@ sylius:
|
|||
name:
|
||||
max_length: Ime taksona ne sme biti daljše od 255 znakov.
|
||||
not_blank: Prosimo, vnesite ime taksona.
|
||||
parent:
|
||||
is_invalid: 'Podrejenega taksona ni mogoče dodeliti kot nadrejenega taksona.'
|
||||
taxonomy:
|
||||
name:
|
||||
max_length: Ime taksonomije ne sme biti daljše od 255 znakov.
|
||||
|
|
|
|||
|
|
@ -9,6 +9,8 @@ sylius:
|
|||
name:
|
||||
max_length: Emri i taksës nuk duhet të përmbajë më shumë se 255 karaktere.
|
||||
not_blank: Fut emrin e taksës.
|
||||
parent:
|
||||
is_invalid: 'Nuk mund të caktoni një takson fëmijë si takson prind.'
|
||||
taxonomy:
|
||||
name:
|
||||
max_length: Emri i kategorisë së taksimit nuk duhet të përmbajë më shumë se 255 karaktere.
|
||||
|
|
|
|||
|
|
@ -5,3 +5,5 @@ sylius:
|
|||
taxon:
|
||||
code:
|
||||
not_blank: Unesite taxon kod.
|
||||
parent:
|
||||
is_invalid: 'Није могуће доделити подређени таксон као надређени таксон.'
|
||||
|
|
|
|||
|
|
@ -13,6 +13,8 @@ sylius:
|
|||
slug:
|
||||
not_blank: กรุณาใส่ Slug
|
||||
unique: Slug ต้องไม่ซ้ำกัน
|
||||
parent:
|
||||
is_invalid: 'ไม่สามารถกำหนด taxon ลูกเป็น taxon พ่อแม่ได้'
|
||||
taxonomy:
|
||||
name:
|
||||
max_length: ชื่อหมวดหมู่ต้องมีความยาวไม่เกิน 255 ตัวอักษร
|
||||
|
|
|
|||
|
|
@ -13,6 +13,8 @@ sylius:
|
|||
slug:
|
||||
not_blank: Lütfen kategori harf dizisi girin.
|
||||
unique: Sınıf kütle birimi benzersiz olmalıdır.
|
||||
parent:
|
||||
is_invalid: 'Bir alt taksonu üst takson olarak atayamazsınız.'
|
||||
taxonomy:
|
||||
name:
|
||||
max_length: Sınıflandırma adı 255 karakterden uzun olamaz.
|
||||
|
|
|
|||
|
|
@ -13,6 +13,8 @@ sylius:
|
|||
slug:
|
||||
not_blank: Будь ласка, введіть слаґ таксону.
|
||||
unique: Слаґ таксону повинен бути унікальним.
|
||||
parent:
|
||||
is_invalid: 'Неможливо призначити дочірній таксон як батьківський таксон.'
|
||||
taxonomy:
|
||||
name:
|
||||
max_length: Назва таксономії не має бути довшою за 255 символів.
|
||||
|
|
|
|||
|
|
@ -13,6 +13,8 @@ sylius:
|
|||
slug:
|
||||
not_blank: 请输入分类标识。
|
||||
unique: 分类标识必须是唯一的。
|
||||
parent:
|
||||
is_invalid: '不能将子分类指定为父分类。'
|
||||
taxonomy:
|
||||
name:
|
||||
max_length: 分类名称不能超过 255 个字符。
|
||||
|
|
|
|||
|
|
@ -0,0 +1,31 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the Sylius package.
|
||||
*
|
||||
* (c) Sylius Sp. z o.o.
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Sylius\Bundle\TaxonomyBundle\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
|
||||
final class TaxonParent extends Constraint
|
||||
{
|
||||
public string $message = 'sylius.taxon.parent.is_invalid';
|
||||
|
||||
public function validatedBy()
|
||||
{
|
||||
return 'sylius_taxon_parent_validator';
|
||||
}
|
||||
|
||||
public function getTargets(): string
|
||||
{
|
||||
return self::CLASS_CONSTRAINT;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,57 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the Sylius package.
|
||||
*
|
||||
* (c) Sylius Sp. z o.o.
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Sylius\Bundle\TaxonomyBundle\Validator;
|
||||
|
||||
use Sylius\Bundle\TaxonomyBundle\Validator\Constraints\TaxonParent;
|
||||
use Sylius\Component\Taxonomy\Model\TaxonInterface;
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\ConstraintValidator;
|
||||
use Webmozart\Assert\Assert;
|
||||
|
||||
final class TaxonParentValidator extends ConstraintValidator
|
||||
{
|
||||
public function validate(mixed $value, Constraint $constraint): void
|
||||
{
|
||||
/** @var TaxonParent $constraint */
|
||||
Assert::isInstanceOf($constraint, TaxonParent::class);
|
||||
|
||||
if (!$value instanceof TaxonInterface) {
|
||||
return;
|
||||
}
|
||||
|
||||
$taxon = $value;
|
||||
$parent = $taxon->getParent();
|
||||
if (null === $parent) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ($parent === $taxon) {
|
||||
$this->context
|
||||
->buildViolation($constraint->message)
|
||||
->atPath('parent')
|
||||
->addViolation();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (null !== $taxon->getId() && null !== $parent->getId() && $taxon->getId() === $parent->getId()) {
|
||||
$this->context
|
||||
->buildViolation($constraint->message)
|
||||
->atPath('parent')
|
||||
->addViolation();
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue