Skip to content

Latest commit

 

History

History
108 lines (93 loc) · 2.86 KB

README.md

File metadata and controls

108 lines (93 loc) · 2.86 KB

Usage

Overriding Seeders

  • Create an app/seeds directory.
  • Override the seeder fixture file:
# app/seeds/NavigationDropdownPages.yml

Page:
  DefaultParentPage:
    Title: 'Parent Page'
    SettingNavigationType: 'default'
  DefaultChildPageOne:
    Title: 'Child Page One'
    Parent: =>Page.DefaultParentPage

Default Seeder Fixtures

  • DatabaseSeeder.yml
  • NavigationDropdownPages.yml

Custom Seeders

  • Create a Custom SeederBuildTask:
<?php
/**/
use Werkbot\Seeder\SeederBuildTask;
/**/
class CustomSeeder extends SeederBuildTask {
	/**/
	protected $title = 'Generate Custom Data';
	protected $description = '';
	protected $enabled = true;
	/**/
	protected $fixtureFileName = 'CustomSeeder.yml';
}
  • Create Fixture file for your Custom SeederBuildTask:
# app/seeds/CustomSeeder.yml

CustomDataObject:
  ArbitraryDataObjectNameOne:
    DataObjectProperty: 'Data Object Value'
  ArbitraryDataObjectNameTwo:
    DataObjectProperty: 'Data Object Value'

Run All Enabled Seeders

Run all enabled seeders with /dev/tasks/Werkbot-Seeder-SeederBuildTask. Configure which seeders should run in DatabaseSeeder.yml:

# app/seeds/DatabaseSeeder.yml

Werkbot\Seeder\NavigationDropdownPagesSeeder:
  enabled: true
CustomSeeder:
  enabled: true

Hook into Generated Objects

Sometimes, you might want to manipulate the generated DataObjects with PHP. A createObjectCallback method can be provided in your SeederBuildTask. This runs everytime a DataObject is generated. The generated DataObject instance ($obj), the DataObject's class name ($class), and the properties passed in by your Fixture file ($data) are available within your createObjectCallback.

The SeederBuildTask

<?php
/**/
use Werkbot\Seeder\SeederBuildTask;
/**/
class CalendarPageSeeder extends SeederBuildTask {
	/**/
	protected $title = 'Generate Calendar Page Seeder';
	protected $description = 'Generate a calendar page with events.';
	protected $enabled = true;
	/**/
	protected $fixtureFileName = 'CalendarPageSeeder.yml';
	/**/
	public function createObjectCallback($obj, $class, $data)
	{
		if($class == EventDate::class){
			/*
				Dynamically generate dates with PHP:

				"DaysInTheFuture" is not a property of "EventDate",
				but it is used to dynamically generate the "StartDate" property.
			*/
			if(isset($data['DaysInTheFuture'])){
				$obj->StartDate = date('Y-m-d H:i:s', strtotime('+' . $data['DaysInTheFuture'] . ' days'));
			} else {
				$obj->StartDate = date('Y-m-d H:i:s');
			}
			$obj->write();
		}
	}
} 

The Fixture File

EventDate:
  EventDateOne:
    DaysInTheFuture: 10

Remove Generated Objects

Seed history may be viewed from /admin/seeder. Deleting a seed will remove all objects generated by that seed. Be careful when removing seeds, deleting them is not reversible. Clicking a seed will show a summary of the objects created.