Skip to content

fix: validation when key does not exists - #10006

Merged
michalsn merged 3 commits into
codeigniter4:developfrom
michalsn:fix/validation-key-not-exists
Mar 2, 2026
Merged

fix: validation when key does not exists#10006
michalsn merged 3 commits into
codeigniter4:developfrom
michalsn:fix/validation-key-not-exists

Conversation

@michalsn

@michalsnmichalsn commented Feb 25, 2026

Copy link
Copy Markdown
Member

Description
Fixes a bug where wildcard field validation (e.g., contacts.friends.*.name) silently skipped array elements that were missing the validated key whenever at least one sibling element had it present. Only the elements whose key existed in the data were validated. The rest were invisible to all rules.

The root cause is that the validator builds $values by filtering a flattened array - keys absent from the data simply never appear, so there is nothing to validate against. For non-wildcard fields, this is not a problem because
dot_array_search() already returns null for a missing key. Wildcard fields had no equivalent treatment.

Fixes#8006

Checklist:

  • Securely signed commits
  • Component(s) with PHPDoc blocks, only if necessary or adds value (without duplication)
  • Unit testing, with >80% coverage
  • User guide updated
  • Conforms to style guide

@michalsnmichalsn added the bug Verified issues on the current code behavior or pull requests that will fix them label Feb 25, 2026
@michalsn
michalsn marked this pull request as draft February 25, 2026 19:04
@michalsn
michalsn marked this pull request as ready for review February 25, 2026 20:45
@michalsn
michalsnforce-pushed the fix/validation-key-not-exists branch from 6479a9e to 003bdf2CompareMarch 1, 2026 19:23
@michalsn
michalsn merged commit 0a5ce99 into codeigniter4:developMar 2, 2026
55 of 59 checks passed
@michalsn

Copy link
Copy Markdown
MemberAuthor

Thank you @paulbalandan

@michalsn
michalsn deleted the fix/validation-key-not-exists branch March 2, 2026 12:37
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bugVerified issues on the current code behavior or pull requests that will fix them

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Bug: Validation passes if key does not exist when using asterisk

2 participants

@michalsn@paulbalandan
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
fix: validation when key does not exists by michalsn · Pull Request #10006 · codeigniter4/CodeIgniter4 · GitHub
Skip to content

fix: validation when key does not exists - #10006

Merged
michalsn merged 3 commits into
codeigniter4:developfrom
michalsn:fix/validation-key-not-exists
Mar 2, 2026
Merged

fix: validation when key does not exists#10006
michalsn merged 3 commits into
codeigniter4:developfrom
michalsn:fix/validation-key-not-exists

Conversation

@michalsn

@michalsnmichalsn commented Feb 25, 2026

Copy link
Copy Markdown
Member

Description
Fixes a bug where wildcard field validation (e.g., contacts.friends.*.name) silently skipped array elements that were missing the validated key whenever at least one sibling element had it present. Only the elements whose key existed in the data were validated. The rest were invisible to all rules.

The root cause is that the validator builds $values by filtering a flattened array - keys absent from the data simply never appear, so there is nothing to validate against. For non-wildcard fields, this is not a problem because
dot_array_search() already returns null for a missing key. Wildcard fields had no equivalent treatment.

Fixes#8006

Checklist:

  • Securely signed commits
  • Component(s) with PHPDoc blocks, only if necessary or adds value (without duplication)
  • Unit testing, with >80% coverage
  • User guide updated
  • Conforms to style guide

@michalsnmichalsn added the bug Verified issues on the current code behavior or pull requests that will fix them label Feb 25, 2026
@michalsn
michalsn marked this pull request as draft February 25, 2026 19:04
@michalsn
michalsn marked this pull request as ready for review February 25, 2026 20:45
@michalsn
michalsnforce-pushed the fix/validation-key-not-exists branch from 6479a9e to 003bdf2CompareMarch 1, 2026 19:23
@michalsn
michalsn merged commit 0a5ce99 into codeigniter4:developMar 2, 2026
55 of 59 checks passed
@michalsn

Copy link
Copy Markdown
MemberAuthor

Thank you @paulbalandan

@michalsn
michalsn deleted the fix/validation-key-not-exists branch March 2, 2026 12:37
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bugVerified issues on the current code behavior or pull requests that will fix them

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Bug: Validation passes if key does not exist when using asterisk

2 participants

@michalsn@paulbalandan
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' fix: validation when key does not exists by michalsn · Pull Request #10006 · codeigniter4/CodeIgniter4 · GitHub
Skip to content

fix: validation when key does not exists - #10006

Merged
michalsn merged 3 commits into
codeigniter4:developfrom
michalsn:fix/validation-key-not-exists
Mar 2, 2026
Merged

fix: validation when key does not exists#10006
michalsn merged 3 commits into
codeigniter4:developfrom
michalsn:fix/validation-key-not-exists

Conversation

@michalsn

@michalsnmichalsn commented Feb 25, 2026

Copy link
Copy Markdown
Member

Description
Fixes a bug where wildcard field validation (e.g., contacts.friends.*.name) silently skipped array elements that were missing the validated key whenever at least one sibling element had it present. Only the elements whose key existed in the data were validated. The rest were invisible to all rules.

The root cause is that the validator builds $values by filtering a flattened array - keys absent from the data simply never appear, so there is nothing to validate against. For non-wildcard fields, this is not a problem because
dot_array_search() already returns null for a missing key. Wildcard fields had no equivalent treatment.

Fixes#8006

Checklist:

  • Securely signed commits
  • Component(s) with PHPDoc blocks, only if necessary or adds value (without duplication)
  • Unit testing, with >80% coverage
  • User guide updated
  • Conforms to style guide

@michalsnmichalsn added the bug Verified issues on the current code behavior or pull requests that will fix them label Feb 25, 2026
@michalsn
michalsn marked this pull request as draft February 25, 2026 19:04
@michalsn
michalsn marked this pull request as ready for review February 25, 2026 20:45
@michalsn
michalsnforce-pushed the fix/validation-key-not-exists branch from 6479a9e to 003bdf2CompareMarch 1, 2026 19:23
@michalsn
michalsn merged commit 0a5ce99 into codeigniter4:developMar 2, 2026
55 of 59 checks passed
@michalsn

Copy link
Copy Markdown
MemberAuthor

Thank you @paulbalandan

@michalsn
michalsn deleted the fix/validation-key-not-exists branch March 2, 2026 12:37
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bugVerified issues on the current code behavior or pull requests that will fix them

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Bug: Validation passes if key does not exist when using asterisk

2 participants

@michalsn@paulbalandan
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' fix: validation when key does not exists by michalsn · Pull Request #10006 · codeigniter4/CodeIgniter4 · GitHub
Skip to content

fix: validation when key does not exists - #10006

Merged
michalsn merged 3 commits into
codeigniter4:developfrom
michalsn:fix/validation-key-not-exists
Mar 2, 2026
Merged

fix: validation when key does not exists#10006
michalsn merged 3 commits into
codeigniter4:developfrom
michalsn:fix/validation-key-not-exists

Conversation

@michalsn

@michalsnmichalsn commented Feb 25, 2026

Copy link
Copy Markdown
Member

Description
Fixes a bug where wildcard field validation (e.g., contacts.friends.*.name) silently skipped array elements that were missing the validated key whenever at least one sibling element had it present. Only the elements whose key existed in the data were validated. The rest were invisible to all rules.

The root cause is that the validator builds $values by filtering a flattened array - keys absent from the data simply never appear, so there is nothing to validate against. For non-wildcard fields, this is not a problem because
dot_array_search() already returns null for a missing key. Wildcard fields had no equivalent treatment.

Fixes#8006

Checklist:

  • Securely signed commits
  • Component(s) with PHPDoc blocks, only if necessary or adds value (without duplication)
  • Unit testing, with >80% coverage
  • User guide updated
  • Conforms to style guide

@michalsnmichalsn added the bug Verified issues on the current code behavior or pull requests that will fix them label Feb 25, 2026
@michalsn
michalsn marked this pull request as draft February 25, 2026 19:04
@michalsn
michalsn marked this pull request as ready for review February 25, 2026 20:45
@michalsn
michalsnforce-pushed the fix/validation-key-not-exists branch from 6479a9e to 003bdf2CompareMarch 1, 2026 19:23
@michalsn
michalsn merged commit 0a5ce99 into codeigniter4:developMar 2, 2026
55 of 59 checks passed
@michalsn

Copy link
Copy Markdown
MemberAuthor

Thank you @paulbalandan

@michalsn
michalsn deleted the fix/validation-key-not-exists branch March 2, 2026 12:37
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bugVerified issues on the current code behavior or pull requests that will fix them

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Bug: Validation passes if key does not exist when using asterisk

2 participants

@michalsn@paulbalandan
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' fix: validation when key does not exists by michalsn · Pull Request #10006 · codeigniter4/CodeIgniter4 · GitHub
Skip to content

fix: validation when key does not exists - #10006

Merged
michalsn merged 3 commits into
codeigniter4:developfrom
michalsn:fix/validation-key-not-exists
Mar 2, 2026
Merged

fix: validation when key does not exists#10006
michalsn merged 3 commits into
codeigniter4:developfrom
michalsn:fix/validation-key-not-exists

Conversation

@michalsn

@michalsnmichalsn commented Feb 25, 2026

Copy link
Copy Markdown
Member

Description
Fixes a bug where wildcard field validation (e.g., contacts.friends.*.name) silently skipped array elements that were missing the validated key whenever at least one sibling element had it present. Only the elements whose key existed in the data were validated. The rest were invisible to all rules.

The root cause is that the validator builds $values by filtering a flattened array - keys absent from the data simply never appear, so there is nothing to validate against. For non-wildcard fields, this is not a problem because
dot_array_search() already returns null for a missing key. Wildcard fields had no equivalent treatment.

Fixes#8006

Checklist:

  • Securely signed commits
  • Component(s) with PHPDoc blocks, only if necessary or adds value (without duplication)
  • Unit testing, with >80% coverage
  • User guide updated
  • Conforms to style guide

@michalsnmichalsn added the bug Verified issues on the current code behavior or pull requests that will fix them label Feb 25, 2026
@michalsn
michalsn marked this pull request as draft February 25, 2026 19:04
@michalsn
michalsn marked this pull request as ready for review February 25, 2026 20:45
@michalsn
michalsnforce-pushed the fix/validation-key-not-exists branch from 6479a9e to 003bdf2CompareMarch 1, 2026 19:23
@michalsn
michalsn merged commit 0a5ce99 into codeigniter4:developMar 2, 2026
55 of 59 checks passed
@michalsn

Copy link
Copy Markdown
MemberAuthor

Thank you @paulbalandan

@michalsn
michalsn deleted the fix/validation-key-not-exists branch March 2, 2026 12:37
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bugVerified issues on the current code behavior or pull requests that will fix them

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Bug: Validation passes if key does not exist when using asterisk

2 participants

@michalsn@paulbalandan
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' fix: validation when key does not exists by michalsn · Pull Request #10006 · codeigniter4/CodeIgniter4 · GitHub
Skip to content

fix: validation when key does not exists - #10006

Merged
michalsn merged 3 commits into
codeigniter4:developfrom
michalsn:fix/validation-key-not-exists
Mar 2, 2026
Merged

fix: validation when key does not exists#10006
michalsn merged 3 commits into
codeigniter4:developfrom
michalsn:fix/validation-key-not-exists

Conversation

@michalsn

@michalsnmichalsn commented Feb 25, 2026

Copy link
Copy Markdown
Member

Description
Fixes a bug where wildcard field validation (e.g., contacts.friends.*.name) silently skipped array elements that were missing the validated key whenever at least one sibling element had it present. Only the elements whose key existed in the data were validated. The rest were invisible to all rules.

The root cause is that the validator builds $values by filtering a flattened array - keys absent from the data simply never appear, so there is nothing to validate against. For non-wildcard fields, this is not a problem because
dot_array_search() already returns null for a missing key. Wildcard fields had no equivalent treatment.

Fixes#8006

Checklist:

  • Securely signed commits
  • Component(s) with PHPDoc blocks, only if necessary or adds value (without duplication)
  • Unit testing, with >80% coverage
  • User guide updated
  • Conforms to style guide

@michalsnmichalsn added the bug Verified issues on the current code behavior or pull requests that will fix them label Feb 25, 2026
@michalsn
michalsn marked this pull request as draft February 25, 2026 19:04
@michalsn
michalsn marked this pull request as ready for review February 25, 2026 20:45
@michalsn
michalsnforce-pushed the fix/validation-key-not-exists branch from 6479a9e to 003bdf2CompareMarch 1, 2026 19:23
@michalsn
michalsn merged commit 0a5ce99 into codeigniter4:developMar 2, 2026
55 of 59 checks passed
@michalsn

Copy link
Copy Markdown
MemberAuthor

Thank you @paulbalandan

@michalsn
michalsn deleted the fix/validation-key-not-exists branch March 2, 2026 12:37
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bugVerified issues on the current code behavior or pull requests that will fix them

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Bug: Validation passes if key does not exist when using asterisk

2 participants

@michalsn@paulbalandan
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' fix: validation when key does not exists by michalsn · Pull Request #10006 · codeigniter4/CodeIgniter4 · GitHub
Skip to content

fix: validation when key does not exists - #10006

Merged
michalsn merged 3 commits into
codeigniter4:developfrom
michalsn:fix/validation-key-not-exists
Mar 2, 2026
Merged

fix: validation when key does not exists#10006
michalsn merged 3 commits into
codeigniter4:developfrom
michalsn:fix/validation-key-not-exists

Conversation

@michalsn

@michalsnmichalsn commented Feb 25, 2026

Copy link
Copy Markdown
Member

Description
Fixes a bug where wildcard field validation (e.g., contacts.friends.*.name) silently skipped array elements that were missing the validated key whenever at least one sibling element had it present. Only the elements whose key existed in the data were validated. The rest were invisible to all rules.

The root cause is that the validator builds $values by filtering a flattened array - keys absent from the data simply never appear, so there is nothing to validate against. For non-wildcard fields, this is not a problem because
dot_array_search() already returns null for a missing key. Wildcard fields had no equivalent treatment.

Fixes#8006

Checklist:

  • Securely signed commits
  • Component(s) with PHPDoc blocks, only if necessary or adds value (without duplication)
  • Unit testing, with >80% coverage
  • User guide updated
  • Conforms to style guide

@michalsnmichalsn added the bug Verified issues on the current code behavior or pull requests that will fix them label Feb 25, 2026
@michalsn
michalsn marked this pull request as draft February 25, 2026 19:04
@michalsn
michalsn marked this pull request as ready for review February 25, 2026 20:45
@michalsn
michalsnforce-pushed the fix/validation-key-not-exists branch from 6479a9e to 003bdf2CompareMarch 1, 2026 19:23
@michalsn
michalsn merged commit 0a5ce99 into codeigniter4:developMar 2, 2026
55 of 59 checks passed
@michalsn

Copy link
Copy Markdown
MemberAuthor

Thank you @paulbalandan

@michalsn
michalsn deleted the fix/validation-key-not-exists branch March 2, 2026 12:37
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bugVerified issues on the current code behavior or pull requests that will fix them

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Bug: Validation passes if key does not exist when using asterisk

2 participants

@michalsn@paulbalandan
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); fix: validation when key does not exists by michalsn · Pull Request #10006 · codeigniter4/CodeIgniter4 · GitHub
Skip to content

fix: validation when key does not exists - #10006

Merged
michalsn merged 3 commits into
codeigniter4:developfrom
michalsn:fix/validation-key-not-exists
Mar 2, 2026
Merged

fix: validation when key does not exists#10006
michalsn merged 3 commits into
codeigniter4:developfrom
michalsn:fix/validation-key-not-exists

Conversation

@michalsn

@michalsnmichalsn commented Feb 25, 2026

Copy link
Copy Markdown
Member

Description
Fixes a bug where wildcard field validation (e.g., contacts.friends.*.name) silently skipped array elements that were missing the validated key whenever at least one sibling element had it present. Only the elements whose key existed in the data were validated. The rest were invisible to all rules.

The root cause is that the validator builds $values by filtering a flattened array - keys absent from the data simply never appear, so there is nothing to validate against. For non-wildcard fields, this is not a problem because
dot_array_search() already returns null for a missing key. Wildcard fields had no equivalent treatment.

Fixes#8006

Checklist:

  • Securely signed commits
  • Component(s) with PHPDoc blocks, only if necessary or adds value (without duplication)
  • Unit testing, with >80% coverage
  • User guide updated
  • Conforms to style guide

@michalsnmichalsn added the bug Verified issues on the current code behavior or pull requests that will fix them label Feb 25, 2026
@michalsn
michalsn marked this pull request as draft February 25, 2026 19:04
@michalsn
michalsn marked this pull request as ready for review February 25, 2026 20:45
@michalsn
michalsnforce-pushed the fix/validation-key-not-exists branch from 6479a9e to 003bdf2CompareMarch 1, 2026 19:23
@michalsn
michalsn merged commit 0a5ce99 into codeigniter4:developMar 2, 2026
55 of 59 checks passed
@michalsn

Copy link
Copy Markdown
MemberAuthor

Thank you @paulbalandan

@michalsn
michalsn deleted the fix/validation-key-not-exists branch March 2, 2026 12:37
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bugVerified issues on the current code behavior or pull requests that will fix them

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Bug: Validation passes if key does not exist when using asterisk

2 participants

@michalsn@paulbalandan