Cms\Classes\ComponentBase

Source: ~/modules/cms/classes/ComponentBase.php

Extends:

Component base class

Public properties

public string $id

A unique identifier for this component.

public string $alias

Alias used for this component.

public string $name

Component class name or class alias used in the component declaration in a template.

public boolean $isHidden

Determines whether the component is hidden from the back-end UI.

public string $pluginIcon

Icon of the plugin that defines the component. This field is used by the CMS internally.

public string $componentCssClass

Component CSS class name for the back-end page/layout component list. This field is used by the CMS internally.

public boolean $inspectorEnabled

Determines whether Inspector can be used with the component. This field is used by the CMS internally.

public string $assetPath

Specifies a path to the asset directory.

Show inherited public properties

Inherited public properties

Protected properties

protected string $dirName

Specifies the component directory name.

protected Cms\Classes\Controller $controller

Controller object.

protected Cms\Classes\PageCode $page

Page object object.

protected array $externalPropertyNames

A collection of external property names used by this component.

protected array $assets

Collection of assets to display in the layout.

protected array $emitterSingleEventCollection

Collection of registered events to be fired once only.

protected array $emitterEventCollection

Collection of registered events.

protected array $emitterEventSorted

Sorted collection of events.

protected array $properties

Contains the object property values.

Show inherited protected properties

Inherited protected properties

Public methods

public mixed __call(string $method, array $parameters)

Dynamically handle calls into the controller instance.

Parameters
  • string $method
  • array $parameters

public void __construct(null|CodeBase $cmsObject=NULL, array $properties=array())

Component constructor. Takes in the page or layout code section object and properties set by the page or layout.

Parameters
  • null|CodeBase $cmsObject
  • array $properties

public void __toString()

Returns the component's alias, used by SELF

public void addCss(string $name, array $attributes=array())

Adds StyleSheet asset to the asset list. Call $this->makeAssets() in a view to output corresponding markup.

Parameters
  • string $name - Specifies a path (URL) to the script.
  • array $attributes - Adds extra HTML attributes to the asset link.

public void addJs(string $name, array $attributes=array())

Adds JavaScript asset to the asset list. Call $this->makeAssets() in a view to output corresponding markup.

Parameters
  • string $name - Specifies a path (URL) to the script.
  • array $attributes - Adds extra HTML attributes to the asset link.

public void addRss(string $name, array $attributes=array())

Adds an RSS link asset to the asset list. Call $this->makeAssets() in a view to output corresponding markup.

Parameters
  • string $name - Specifies a path (URL) to the RSS channel
  • array $attributes - Adds extra HTML attributes to the asset link.

public self bindEvent($event, $callback, $priority=0)

Create a new event binding.

Parameters
  • $event
  • $callback
  • $priority

public self bindEventOnce($event, $callback)

Create a new event binding that fires once only

Parameters
  • $event
  • $callback

public string combineAssets(array $assets, string $localPath='')

Run the provided assets through the Asset Combiner

Parameters
  • array $assets - Collection of assets
  • string $localPath - Prefix all assets with this path (optional)

public void componentDetails()

Returns information about this component, including name and description.

public void defineProperties()

Defines the properties used by this class. This method should be used as an override in the extended class.

public array fireEvent(string $event, array $params=array(), boolean $halt=false)

Fire an event and call the listeners.

Parameters
  • string $event - Event name
  • array $params - Event parameters
  • boolean $halt - Halt after first non-null result

public mixed fireSystemEvent(string $event, array $params=array(), boolean $halt=true)

Fires a combination of local and global events. The first segment is removed from the event name locally and the local object is passed as the first argument to the event globally. Halting is also enabled by default.

For example:

$this->fireSystemEvent('backend.list.myEvent', ['my value']);

Is equivalent to:

$this->fireEvent('list.myEvent', ['myvalue'], true);

Event::fire('backend.list.myEvent', [$this, 'myvalue'], true);
Parameters
  • string $event - Event name
  • array $params - Event parameters
  • boolean $halt - Halt after first non-null result

public string fireViewEvent(string $event, array $params=array())

Special event function used for extending within view files, allowing HTML to be injected multiple times.

For example:

<?= $this->fireViewEvent('backend.auth.extendSigninView') ?>
Parameters
  • string $event - Event name
  • array $params - Event parameters

public void flushAssets()

Disables the use, and subequent broadcast, of assets. This is useful to call during an AJAX request to speed things up. This method works by specifically targeting the hasAssetsDefined method.

public string getAssetPath(string $fileName, string $assetPath=NULL)

Locates a file based on it's definition. If the file starts with a forward slash, it will be returned in context of the application public path, otherwise it will be returned in context of the asset path.

Parameters
  • string $fileName - File to load.
  • string $assetPath - Explicitly define an asset path.

public array getAssetPaths()

Returns an array of all registered asset paths.

public void getPath()

Returns the absolute component path.

public array getProperties()

Returns all properties.

public array getPropertyOptions(string $property)

Returns options for multi-option properties (drop-downs, etc.)

Parameters
  • string $property - Specifies the property name

public bool hasAssetsDefined()

Returns true if assets any have been added.

public void init()

Executed when this component is first initialized, before AJAX requests.

public string makeAssets(string $type=NULL)

Outputs <link> and <script> tags to load assets previously added with addJs and addCss method calls

Parameters
  • string $type - Return an asset collection of a given type (css, rss, js) or null for all.

public void onRender()

Executed when this component is rendered on a page or layout.

public void onRun()

Executed when this component is bound to a page or layout, part of the page life cycle.

public string paramName(string $name, mixed $default=NULL)

Returns the external property name when the property value is a routing parameter reference. Otherwise the default value specified is returned.

Parameters
  • string $name - The property name
  • mixed $default

public string property(string $name, string $default=NULL)

Returns a defined property value or default if one is not set.

Parameters
  • string $name - The property name to look for.
  • string $default - A default value to return if no name is found.

public string propertyName(string $name, mixed $default=NULL)

Returns the external property name when the property value is an external property reference. Otherwise the default value specified is returned.

Parameters
  • string $name - The property name
  • mixed $default

public void renderPartial()

Renders a requested partial in context of this component, see Cms\Classes\Controller@renderPartial for usage.

public boolean runAjaxHandler($handler)

Executes the event cycle when running an AJAX handler.

Parameters
  • $handler

public string setExternalPropertyName(string $name, string $extName)

Sets an external property name.

Parameters
  • string $name - Property name
  • string $extName - External property name

public void setExternalPropertyNames(array $names)

Sets names used by external properties.

Parameters
  • array $names - The key should be the property name, the value should be the external property name.

public void setProperties(array $properties)

Sets multiple properties.

Parameters
  • array $properties

public void setProperty(string $name, mixed $value)

Sets a property value

Parameters
  • string $name
  • mixed $value

public self unbindEvent(string $event=NULL)

Destroys an event binding.

Parameters
  • string $event - Event to destroy

public array validateProperties(array $properties)

Validates the properties against the defined properties of the class. This method also sets default properties.

Parameters
  • array $properties - The supplied property values.

Show inherited public methods

Inherited public methods

Protected methods

protected array emitterEventSortEvents(string $eventName)

Sort the listeners for a given event by priority.

Parameters
  • string $eventName

protected string getAssetEntryBuildPath(array $asset)

Internal helper, attaches a build code to an asset path

Parameters
  • array $asset - Stored asset array

protected string getAssetScheme(string $asset)

Internal helper, get asset scheme

Parameters
  • string $asset - Specifies a path (URL) to the asset.

protected void removeDuplicates()

Removes duplicate assets from the entire collection.

Show inherited protected methods

Inherited protected methods

  • protected boolean extendableIsAccessible(mixed $class, string $propertyName) - defined in October\Rain\Extension\Extendable. Checks if a property is accessible, property equivalent of is_callabe().
  • protected void extensionExtractMethods(string $extensionName, object $extensionObject) - defined in October\Rain\Extension\Extendable. Extracts the available methods from a behavior and adds it to the.