Ich habe eine Symfony-Validierungsbeschränkung, die alle Twig-Tags mit einem regulären Ausdruck entfernt, bevor die Anzahl der Zeichen gezählt und anhand der Zeichenlängenbeschränkung validiert wird. (Mein Formular ermöglicht es Benutzern, eine begrenzte Teilmenge von Twig-Tags in Felder einzugeben.) Es bewirkt also Folgendes:
$parsedLength = mb_strlen( preg_replace('/{%[^%]*%}/', '', $stringValue) );
...Wenn der $parsedLength
-Wert zu lang ist, liegt ein Build-Verstoß vor.
Das funktioniert, aber bei mir funktioniert es nicht. Gibt es eine Möglichkeit, einen Dienst an meine Validierungsklasse zu übergeben und diesen Dienst dann zu verwenden, um den Text ohne die Twig-Tags darzustellen? Dies scheint eine harmonischere Vorgehensweise zu sein als die Verwendung regulärer Ausdrücke.
你能分享一下你的代码吗?据我了解,您正在约束内应用验证逻辑,但这应该进入验证器内部。
实现预期结果的正确步骤是:
一个例子:
官方文档:https://symfony.com/doc/current/validation/ custom_constraint.html
我并不是 100% 这就是您所要求的,但您可以根据您的输入创建一个模板,然后渲染它。当然要去掉所有的树枝,尽管我不确定你是否总是知道变量是什么。
我查了一下,所有的例子看起来都很旧,我不确定事情是否仍然有效。尽管我确信它在某个地方,但甚至在文档中找不到示例。无论如何:
如果不出意外的话,这也可以让您验证实际的模板。但正如已经提到的,我不太确定
parsed length
的含义。无论如何,createTemplate(对我来说)是一个有趣的方法。