🚀
Stancy
  • Introduction
  • Issues
  • Changelog
  • Installation
  • Getting started
  • Basics
    • Content
    • PageData
    • Make Page Command
  • Advanced
    • Feed Atom/RSS
    • Sitemap
    • static export
  • Webserver
    • 🚧nginx
    • 🚧caddy
  • Services
    • GitHub Actions
    • 🚧GitHub Pages
    • Netlify
    • 🚧sitesauce
    • 🚧forestry
Powered by GitBook
On this page
  • Properties
  • Traits
  • Routable & PageHasUrl

Was this helpful?

  1. Basics

PageData

PreviousContentNextMake Page Command

Last updated 5 years ago

Was this helpful?

Stancy uses to validate the passed in data and allow static analysis.

Properties

Your page data class should extend \Astrotomic\Stancy\Models\PageData and define all possible attributes via public properties including a doc-tag with all possible types (FQCN for objects).

app/Pages/Blog.php
<?php

namespace App\Pages;

class Blog extends PageData
{
    /** @var string */
    public $title;
    
    /** @var \Carbon\Carbon */
    public $date;

    /** @var \App\Pages\Post[] */
    public $posts;
}

Traits

The package comes with some ready to use traits with the most common attributes.

  • \Astrotomic\Stancy\Traits\PageHasContent adds the contents attribute (used by markdown content parsers)

  • \Astrotomic\Stancy\Traits\PageHasDate adds the date attribute (used by \Spatie\Sheets\PathParsers\SlugWithDateParser)

  • \Astrotomic\Stancy\Traits\PageHasOrder adds the order attribute (used by \Spatie\Sheets\PathParsers\SlugWithOrderParser)

  • \Astrotomic\Stancy\Traits\PageHasSlug adds the slug attribute (used by path parsers)

app/Pages/Blog.php
<?php

namespace App\Pages;

use Astrotomic\Stancy\Models\PageData;
use Astrotomic\Stancy\Traits\PageHasContent;
use Astrotomic\Stancy\Traits\PageHasSlug;

class Blog extends PageData
{
    use PageHasSlug, PageHasContent;
}

Routable & PageHasUrl

The package comes with a \Astrotomic\Stancy\Contracts\Routable interface which defines a getUrl() method. You can combine it with the \Astrotomic\Stancy\Traits\PageHasUrl trait which defines the toSitemapItem() method by using the getUrl() return value. It's also great to get the page url in a view or for the feed item transformation.

app/Pages/Blog.php
<?php

namespace App\Pages;

use Astrotomic\Stancy\Contracts\Routable;
use Astrotomic\Stancy\Models\PageData;
use Astrotomic\Stancy\Traits\PageHasUrl;

class Blog extends PageData implements Routable
{
    use PageHasUrl;

    public function getUrl(): string
    {
        return url('/blog');
    }
}
spatie/data-transfer-object