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.

[blogPost] 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 string getUrlAttribute()

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

public string getUrlPageName()

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

public void resetUrlComponent(string $name, string $property=NULL)

Changes the component used for generating the URLs dynamically.

  • string $name
  • string $property

public void setUrlAttribute(string $value)

Explicitly set the URL for this model.

  • string $value

public void setUrlPageName(string $pageName)

Explicitly set the CMS Page to link to.

  • string $pageName

Protected methods

protected string makeUrl()

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.