cms icon indicating copy to clipboard operation
cms copied to clipboard

[4.x] Bug: Values class not forwarding calls to proxied collection methods

Open caseydwyer opened this issue 1 year ago • 0 comments

This PR makes a few changes to how the magic __call method works, within Fields\Values.php. Currently, it performs a single check and throws an exception if this condition is not met:

$this->getProxiedInstance()->has($method)

We get the collection back as the proxied instance, but the has method checks for the existence of a particular key in the data—not an available method on the class itself.

With this PR, we're adding in an initial check to see if the passed $method exists on the Collection, via the getProxiedInstance(). If it does exist, call it with the additional $args and return the value. Otherwise, continue to the same query builder check we had originally. If neither of these apply, throw an exception w/ a slightly more descriptive message.

Also added to the ValuesTest, with an example that illustrates our particular use-case for some custom front-end output.


Disclaimer: the way this method was defined lead me to believe it's missing the functionality outlined above, but by all means, check my work/logic here, and don't hesitate to trash this PR if it's not inline with the intended use of that class or method.

caseydwyer avatar Jan 29 '24 05:01 caseydwyer