diff --git a/src/Form/Type/Operator/StringOperatorType.php b/src/Form/Type/Operator/StringOperatorType.php
new file mode 100644
index 0000000000..fe4e667304
--- /dev/null
+++ b/src/Form/Type/Operator/StringOperatorType.php
@@ -0,0 +1,51 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Sonata\AdminBundle\Form\Type\Operator;
+
+use Symfony\Component\Form\AbstractType;
+use Symfony\Component\Form\Extension\Core\Type\ChoiceType as FormChoiceType;
+use Symfony\Component\OptionsResolver\OptionsResolver;
+
+final class StringOperatorType extends AbstractType
+{
+ public const TYPE_CONTAINS = 1;
+ public const TYPE_NOT_CONTAINS = 2;
+ public const TYPE_EQUAL = 3;
+ public const TYPE_STARTS_WITH = 4;
+ public const TYPE_ENDS_WITH = 5;
+
+ public function configureOptions(OptionsResolver $resolver)
+ {
+ $resolver->setDefaults([
+ 'choice_translation_domain' => 'SonataAdminBundle',
+ 'choices' => [
+ 'label_type_contains' => self::TYPE_CONTAINS,
+ 'label_type_not_contains' => self::TYPE_NOT_CONTAINS,
+ 'label_type_equals' => self::TYPE_EQUAL,
+ 'label_type_starts_with' => self::TYPE_STARTS_WITH,
+ 'label_type_ends_with' => self::TYPE_ENDS_WITH,
+ ],
+ ]);
+ }
+
+ public function getParent()
+ {
+ return FormChoiceType::class;
+ }
+
+ public function getBlockPrefix()
+ {
+ return 'sonata_type_operator_string';
+ }
+}
diff --git a/src/Resources/translations/SonataAdminBundle.ar.xliff b/src/Resources/translations/SonataAdminBundle.ar.xliff
index 0c2f437ab0..7ff200f54f 100644
--- a/src/Resources/translations/SonataAdminBundle.ar.xliff
+++ b/src/Resources/translations/SonataAdminBundle.ar.xliff
@@ -490,6 +490,14 @@
تبديل التنقل
+
+
+ ابدا ب
+
+
+
+ ينتهي بـ
+