{"id":93003,"date":"2024-06-04T23:06:00","date_gmt":"2024-06-04T14:06:00","guid":{"rendered":"https:\/\/contactform7.com\/?p=93003"},"modified":"2026-10-13T23:09:17","modified_gmt":"2026-10-13T14:09:17","slug":"conditional-logic-validation-with-the-all-and-any-rules","status":"publish","type":"post","link":"https:\/\/contactform7.com\/es\/2024\/06\/04\/conditional-logic-validation-with-the-all-and-any-rules\/","title":{"rendered":"Validaci\u00f3n con l\u00f3gica condicional mediante las reglas All y Any"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">En la terminolog\u00eda de <a href=\"https:\/\/contactform7.com\/es\/schema-woven-validation\/\" data-type=\"page\" data-id=\"42446\">Schema-Woven Validation<\/a>, una regla compuesta es una regla que contiene un conjunto de reglas secundarias. La versi\u00f3n 5.9 de Contact Form 7 y las versiones posteriores admiten los tipos de reglas compuestas <code><a href=\"https:\/\/github.com\/rocklobster-in\/swv\/tree\/trunk\/rules#all\" data-type=\"link\" data-id=\"https:\/\/github.com\/rocklobster-in\/swv\/tree\/trunk\/rules#all\">all<\/a><\/code> y <code><a href=\"https:\/\/github.com\/rocklobster-in\/swv\/tree\/trunk\/rules#any\" data-type=\"link\" data-id=\"https:\/\/github.com\/rocklobster-in\/swv\/tree\/trunk\/rules#any\">any<\/a><\/code>, con los que puedes implementar l\u00f3gica condicional en la validaci\u00f3n de los datos introducidos por el usuario.<\/p>\n\n\n\n\n\n\n<!--more-->\n\n\n\n<h4 id=\"the-all-rule\" class=\"wp-block-heading\">La regla All<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Una regla <code>all<\/code> comprueba que se cumplan todas las reglas secundarias incluidas en la propiedad <code>rules<\/code>. El siguiente fragmento de JSON muestra un ejemplo de una regla <code>all<\/code>:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\n{\n    &quot;rule&quot;: &quot;all&quot;,\n    &quot;rules&quot;: &#x5B;\n        {\n            &quot;rule&quot;: &quot;required&quot;,\n            &quot;field&quot;: &quot;adelie&quot;,\n            &quot;error&quot;: &quot;\u00a1Elige un ping\u00fcino de Adelia!&quot;\n        },\n        {\n            &quot;rule&quot;: &quot;required&quot;,\n            &quot;field&quot;: &quot;emperor&quot;,\n            &quot;error&quot;: &quot;\u00a1Elige un ping\u00fcino emperador!&quot;\n        }\n    ]\n}\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Las reglas secundarias se eval\u00faan en orden, de arriba abajo. Si una de ellas no se cumple, la iteraci\u00f3n se detiene y el procesador no eval\u00faa las reglas secundarias restantes. Puedes aprovechar este comportamiento de una regla <code>all<\/code> para utilizar una regla secundaria como una condici\u00f3n que determine si deben evaluarse las siguientes reglas secundarias.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si una regla secundaria no supera la validaci\u00f3n y tiene definidas las propiedades <code>error<\/code> y <code>field<\/code>, estas propiedades prevalecen sobre las correspondientes de la regla principal. Si ni la regla secundaria que ha fallado ni su regla principal <code>all<\/code> tienen definida la propiedad <code>error<\/code>, no se mostrar\u00e1 ning\u00fan mensaje de error de validaci\u00f3n.<\/p>\n\n\n\n<h4 id=\"the-any-rule\" class=\"wp-block-heading\">La regla Any<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Una regla <code>any<\/code> comprueba que se cumpla al menos una de las reglas secundarias incluidas en la propiedad <code>rules<\/code>. El siguiente fragmento de JSON muestra un ejemplo de una regla <code>any<\/code>:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\n{\n    &quot;rule&quot;: &quot;any&quot;,\n    &quot;field&quot;: &quot;humboldt&quot;,\n    &quot;error&quot;: &quot;\u00a1Elige un ping\u00fcino!&quot;,\n    &quot;rules&quot;: &#x5B;\n        {\n            &quot;rule&quot;: &quot;required&quot;,\n            &quot;field&quot;: &quot;gentoo&quot;\n        },\n        {\n            &quot;rule&quot;: &quot;required&quot;,\n            &quot;field&quot;: &quot;humboldt&quot;\n        }\n    ]\n}\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Las reglas secundarias se eval\u00faan en orden, de arriba abajo. Si una de ellas se cumple, la iteraci\u00f3n se detiene y el procesador no eval\u00faa las reglas secundarias restantes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si una regla <code>any<\/code> no se cumple (es decir, ninguna de sus reglas secundarias se cumple) y tiene definidas las propiedades <code>error<\/code> y <code>field<\/code>, el mensaje de error especificado en la propiedad <code>error<\/code> se mostrar\u00e1 en el campo indicado por la propiedad <code>field<\/code>.<\/p>\n\n\n\n\n\n\n<h4 id=\"implementing-composite-rule\" class=\"wp-block-heading\">Implementar una regla compuesta<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Para a\u00f1adir una regla compuesta (como las reglas <code>all<\/code> y <code>any<\/code> descritas anteriormente) al esquema de validaci\u00f3n, primero crea un objeto de regla principal mediante la funci\u00f3n <code><a href=\"https:\/\/contactform7.com\/es\/2023\/06\/20\/setting-upper-limit-of-checkbox-selection\/\" data-type=\"link\" data-id=\"https:\/\/contactform7.com\/2023\/06\/20\/setting-upper-limit-of-checkbox-selection\/\">wpcf7_swv_create_rule()<\/a><\/code> y, a continuaci\u00f3n, a\u00f1ade las reglas secundarias mediante el m\u00e9todo <code>add_rule()<\/code> de la regla principal.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\nadd_action(\n    &#039;wpcf7_swv_create_schema&#039;,\n    function ( $schema, $contact_form ) {\n      \n        \/\/ All rule\n        $all_rule = wpcf7_swv_create_rule( &#039;all&#039; );\n\n        $all_rule-&gt;add_rule(\n            wpcf7_swv_create_rule( &#039;required&#039;, array(\n                &#039;field&#039; =&gt; &#039;adelie&#039;,\n                &#039;error&#039; =&gt; &quot;\u00a1Elige un ping\u00fcino Adelia!&quot;,\n            ) )\n        );\n\n        $all_rule-&gt;add_rule(\n            wpcf7_swv_create_rule( &#039;required&#039;, array(\n                &#039;field&#039; =&gt; &#039;emperor&#039;,\n                &#039;error&#039; =&gt; &quot;\u00a1Elige un ping\u00fcino emperador!&quot;,\n            ) )\n        );\n\n        \/\/ A\u00f1adiendo la regla \u00abAll\u00bb al schema\n        $schema-&gt;add_rule( $all_rule );\n\n        \/\/ Regla \u00abAny\u00bb\n        $any_rule = wpcf7_swv_create_rule( &#039;any&#039;, array(\n            &#039;field&#039; =&gt; &#039;humboldt&#039;,\n            &#039;error&#039; =&gt; &quot;\u00a1Elige un ping\u00fcino!&quot;,\n        ) );\n\n        $any_rule-&gt;add_rule(\n            wpcf7_swv_create_rule( &#039;required&#039;, array(\n                &#039;field&#039; =&gt; &#039;gentoo&#039;,\n            ) )\n        );\n\n        $any_rule-&gt;add_rule(\n            wpcf7_swv_create_rule( &#039;required&#039;, array(\n                &#039;field&#039; =&gt; &#039;humboldt&#039;,\n            ) )\n        );\n\n        \/\/ A\u00f1adiendo la regla \u00abAny\u00bb al schema\n        $schema-&gt;add_rule( $any_rule );\n    },\n    10, 2\n);\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>En la terminolog\u00eda de Schema-Woven Validation, una regla compuesta es una regla que contiene un conjunto de reglas secundarias. La versi\u00f3n 5.9 de Contact Form 7 y las versiones posteriores admiten los tipos de reglas compuestas all y any, con los que puedes implementar l\u00f3gica condicional en la validaci\u00f3n de los datos introducidos por el &hellip; <a href=\"https:\/\/contactform7.com\/es\/2024\/06\/04\/conditional-logic-validation-with-the-all-and-any-rules\/\" class=\"more-link\">Seguir leyendo <span class=\"screen-reader-text\">Validaci\u00f3n con l\u00f3gica condicional mediante las reglas All y Any<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_locale":"es_ES","_original_post":"https:\/\/contactform7.com\/?p=56249","footnotes":"","jetpack_post_was_ever_published":false},"categories":[19],"tags":[31],"class_list":["post-93003","post","type-post","status-publish","format-standard","hentry","category-cookbook","tag-swv","es-ES"],"jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/contactform7.com\/wp-json\/wp\/v2\/posts\/93003","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/contactform7.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/contactform7.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/contactform7.com\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/contactform7.com\/wp-json\/wp\/v2\/comments?post=93003"}],"version-history":[{"count":0,"href":"https:\/\/contactform7.com\/wp-json\/wp\/v2\/posts\/93003\/revisions"}],"wp:attachment":[{"href":"https:\/\/contactform7.com\/wp-json\/wp\/v2\/media?parent=93003"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/contactform7.com\/wp-json\/wp\/v2\/categories?post=93003"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/contactform7.com\/wp-json\/wp\/v2\/tags?post=93003"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}