About Fieldtype YAML

Field that stores YAML data and formats it as an object, when requested.

Category 1Admin Helpers
Admin helper modules are those that provide helpful tools, UI enhancements or optimizations to the admin panel (excluding Fieldtype or Inputfield modules).
Category 2Field Types
Fieldtype modules that represent a data type used by fields.
Category 3Input Fields
Inputfield modules that provide a UI input widget in the ProcessWire admin.
Release StateStable
Should be safe for use in production environments. *
Module Version0.3.0
Class NameFieldtypeYaml
Compatibility2.5, 2.6, 2.7, 3.0
Date AddedNovember 20, 2014
Last UpdatedNovember 5, 2016
Recommended ByNew recommendations may take up to 1 day to appear.


This module's files should be placed in /site/modules/FieldtypeYaml/
How to install or uninstall modules


Fieldtype YAML

for ProcessWire 2.5+ and 3.0+

Field that stores YAML data and formats it as an object, when requested.


After installation create a new field, let's say called people and assign it to a template, or just edit an existing text-based field and choose Yaml for the type, save!

In the Details-Tab you have some options you can choose from:

Parse as

Default is WireArray/WireData, the data can also be parsed as Object or Associative Array.

Associative Array is the fastest and the default output by the used Spyc parser, WireArray/WireData might be the slowest, but it's also the most feature rich. You can access properties like you are used to with pages or fields, like $page->person->get('title|name') or $page->people->find('age>20').


Now, in your just created field you can put in some YAML like this:

- name: Jane Doe
  occupation: Product Manager
  age: 33
    - running
    - movies
- name: John Doe
  occupation: Service Worker
  age: 28
    - cycling
    - fishing

In your template, or wherever you are accessing the page, you would use it like any other ProcesssWire data (if you set the parse option to either WireData or Object):

$out = '';
foreach ($page->people as $person) {
   $out .= "Name: {$person->name} <br>";
   $out .= "Occupation: {$person->occupation} <br>";
   $out .= "Age: {$person->age} <br>";
   $out .= "Hobbies: <br>";
   foreach ($person->hobbies as $hobby) {
      $out .= "- {$hobby} <br>";
   $out .= "--- <br>";
echo $out;

More info about YAML:


Change Log

  • 0.3.0 Make the module compatible with ProcessWire 3.x
  • 0.2.0 add WireArray feature, parse chaching and make default toString output the name or label of the field, if WireData/-Array is selected
  • 0.1.0 initial version