Saya mempunyai kekangan pengesahan Symfony yang mengalih keluar semua tag Twig dengan regex sebelum mengira bilangan aksara dan mengesahkan terhadap had panjang aksara. (Borang saya membenarkan orang ramai memasukkan subset terhad teg Twig ke dalam medan.) Jadi ia melakukan perkara berikut:
$parsedLength = mb_strlen( preg_replace('/{%[^%]*%}/', '', $stringValue) );
...Jika nilai $parsedLength
terlalu panjang, ia adalah pelanggaran binaan.
Ini berfungsi, tetapi ia tidak berkesan untuk saya. Adakah terdapat cara untuk menghantar beberapa jenis perkhidmatan ke dalam kelas pengesahan saya dan kemudian menggunakan perkhidmatan itu untuk memberikan teks tanpa tag Twig? Ini nampaknya cara yang lebih harmoni untuk melakukan sesuatu daripada menggunakan ungkapan biasa.
Bolehkah anda berkongsi kod anda? Daripada apa yang saya faham, anda menggunakan logik pengesahan di dalam kekangan, tetapi ini harus masuk ke dalam pengesah.
Langkah yang betul untuk mencapai hasil yang diinginkan ialah:
Contoh:
Dokumentasi rasmi: https://symfony.com/doc/current/validation/custom_constraint.html
Saya tidak pasti 100% ini adalah perkara yang anda minta, tetapi anda boleh membuat templat berdasarkan input anda dan kemudian memaparkannya. Sudah tentu keluarkan semua cawangan, walaupun saya tidak pasti anda sentiasa tahu apakah pembolehubah itu.
Saya menyemak dan semua contoh kelihatan sangat lama dan saya tidak pasti sama ada perkara masih berfungsi. Saya tidak dapat mencari contoh dalam dokumentasi, walaupun saya pasti ia ada di suatu tempat. Bagaimanapun:
Jika tiada yang lain, ini juga membolehkan anda mengesahkan templat sebenar. Tetapi seperti yang telah disebutkan, saya tidak pasti apa maksud
parsed length
. Bagaimanapun, createTemplate adalah (bagi saya) kaedah yang menarik.