Craft plugin that provides uniform syntax for fetching elements whether or not they have been eager loaded
To install Agnostic Fetch, follow these steps:
- Download & unzip the file, rename the unzipped folder to
agnosticfetchand place theagnosticfetchfolder into yourcraft/pluginsfolder - -OR- do a
git clone https://github.com/marionnewlevant/craft3-agnositic_fetch.gitdirectly into yourcraft/pluginsfolder, and rename toagnosticfetch. You can then update it withgit pull - -OR- install with Composer via
composer require marionnewlevant/agnostic-fetchfrom your project folder - Install plugin in the Craft Control Panel under Settings > Plugins
- The plugin folder should be named
agnosticfetchfor Craft to see it.
Agnostic Fetch works on Craft 3.x.
The code to fetch the elements from a Craft Element Query is different when the elements have been eager-loaded. For example, to get the first element of a non eagerly loaded field, someField.one(), but for an eagerly loaded field, someField[0] (and that doesn't even get into the error checking). With Agnostic Fetch, you can do someField | one (or one(someField) or craft.agnosticfetch.one(someField)).
The Agnostic Fetch functions are available as twig filters, as twig functions, and as craft variables.
Use any of:
- someField | all
- all(someField)
- craft.agnosticfetch.all(someField)
Use any of:
- someField | one
- one(someField)
- craft.agnosticfetch.one(someField)
Use any of:
- someField | nth(index)
- nth(someField, index)
- craft.agnosticfetch.nth(someField, index)
(index is based from 0)
Use any of:
- someField | ids
- ids(someField)
- craft.agnosticfetch.ids(someField)
Use any of:
- someField | count
- count(someField)
- craft.agnosticfetch.count(someField)
In addition to the fetching functions, isEager will tell you whether elements have been eager loaded or not.
Use any of:
- someField | isEager
- isEager(someField)
- craft.agnosticfetch.isEager(someField)
Brought to you by Marion Newlevant