URL Maker Trait

Useful in models for generating a "url" attribute, automatically linked to a primary component used in the active theme. For example:

use \Cms\Traits\UrlMaker;

protected $urlComponentName = 'blogPost';

When declared in a model, the above will result in $model->url magically linking to the component that declares isPrimary = 1 in configuration.

isPrimary = "1"

The parameters passed to the component are supplied when overriding the method getUrlParams also within the model.

public function getUrlParams()
    return [
        'id' => $this->id,
        'hash' => $this->hash,

Protected Properties

protected string $url

URL cache

protected static string $urlPageName

Page where detected component is found.

Public Methods

public getUrlAttribute()

public getUrlAttribute(): string 

Mutator for the "url" attribute. Returns the URL detected by the component.

public getUrlPageName()

public getUrlPageName(): string 

Locates the page name where the detected component is found. This method uses the Cache service to improve performance.

public resetUrlComponent()

public resetUrlComponent(string $name, string $property = null): void 

Changes the component used for generating the URLs dynamically.

public setUrlAttribute()

public setUrlAttribute(string $value): void 

Explicitly set the URL for this model.

public setUrlPageName()

public setUrlPageName(string $pageName): void 

Explicitly set the CMS Page to link to.

Protected Methods

protected makeUrl()

protected makeUrl(): string 

Generates a real URL based on the page, detected by the primary component. The CMS Controller is used for this process passing the declared params.