marionnewlevant / agnostic-fetch
uniform syntax for fetching elements whether or not they have been eager loaded
Package info
github.com/marionnewlevant/craft-agnostic_fetch
Type:craft-plugin
pkg:composer/marionnewlevant/agnostic-fetch
Requires
- craftcms/cms: ^3.0.0-RC1
Requires (Dev)
None
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
Craft plugin that provides uniform syntax for fetching elements whether or not they have been eager loaded
Installation
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.
Agnostic Fetch Overview
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.
Using Agnostic Fetch
all
Use any of:
- someField | all
- all(someField)
- craft.agnosticfetch.all(someField)
one
Use any of:
- someField | one
- one(someField)
- craft.agnosticfetch.one(someField)
nth
Use any of:
- someField | nth(index)
- nth(someField, index)
- craft.agnosticfetch.nth(someField, index)
(index is based from 0)
ids
Use any of:
- someField | ids
- ids(someField)
- craft.agnosticfetch.ids(someField)
count
Use any of:
- someField | count
- count(someField)
- craft.agnosticfetch.count(someField)
isEager
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