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
agnosticfetch
and place theagnosticfetch
folder into yourcraft/plugins
folder - -OR- do a
git clone https://github.com/marionnewlevant/craft3-agnositic_fetch.git
directly into yourcraft/plugins
folder, and rename toagnosticfetch
. You can then update it withgit pull
- -OR- install with Composer via
composer require marionnewlevant/agnostic-fetch
from your project folder - Install plugin in the Craft Control Panel under Settings > Plugins
- The plugin folder should be named
agnosticfetch
for 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