Class luya\admin\ngrest\plugins\SelectRelationActiveQuery
Inheritance | luya\admin\ngrest\plugins\SelectRelationActiveQuery » luya\admin\ngrest\base\Plugin » yii\base\Component » yii\base\BaseObject |
---|---|
Implements | luya\admin\base\TypesInterface, yii\base\Configurable |
Available since version | 1.0.0 |
Source Code | https://github.com/luyadev/luya-module-admin/blob/master/src/ngrest/plugins/SelectRelationActiveQuery.php |
Performance optimised select relation plugin.
This plugin is for CRUD tables with large amount of tables, there for you can not access the ActiveRecord object.
'client_id' => [
'class' => SelectRelationActiveQuery::class,
'query' => $this->getClient(),
'relation' => 'client',
'labelField' => ['client_number', 'firstname', 'lastname']
],
The above definition assumes getClient()
is defined for example as:
public function getClient()
{
return $this->hasOne(Client::class, ['id' => 'client_id']);
}
Important: Keep in mind that the relation class which is used inside the query definition for
Client
must be an NgRest CRUD model with controller and API!
If you have composite keys or large to with big list, in order to preserve the assign on list find you can enable asyncList
.
Public Properties
Property | Type | Description | Defined By |
---|---|---|---|
$alias | string | The alias name of the plugin choosen by the user (also known as label) | luya\admin\ngrest\base\Plugin |
$asyncList | boolean | If enabled, the frontend value will be loaded from async request in order to keep original list values, this is mainly used when working with composite keys. | luya\admin\ngrest\plugins\SelectRelationActiveQuery |
$beforeListFind | callable | A callable which will return before the ngrest list view for a given attribute. | luya\admin\ngrest\base\Plugin |
$behaviors | yii\base\Behavior[] | List of behaviors attached to this component. | yii\base\Component |
$cellColor | mixed | A background color of a CRUD table cell where plugin data is shown. | luya\admin\ngrest\base\Plugin |
$condition | string | Provide a condition in order to show or hide a given field. | luya\admin\ngrest\base\Plugin |
$emptyListValue | string | This value will be displayed in the ngrest list overview if the given value is empty(). | luya\admin\ngrest\plugins\SelectRelationActiveQuery |
$hideInList | boolean | Whether this column should be hidden in the list. | luya\admin\ngrest\base\Plugin |
$i18n | boolean | Whether the plugin is in i18n context or not. | luya\admin\ngrest\base\Plugin |
$i18nEmptyValue | mixed | This value will be used when the i18n decodes the given value but is not set yet, default value. | luya\admin\ngrest\base\Plugin |
$icon | mixed | An additional icon of a CRUD table column and CRUD edit form item. | luya\admin\ngrest\base\Plugin |
$labelField | string|array | Provide the sql fields to display. | luya\admin\ngrest\plugins\SelectRelationActiveQuery |
$name | string | The name of the field corresponding to the ActiveRecord (also known as fieldname) | luya\admin\ngrest\base\Plugin |
$query | \luya\admin\ngrest\plugins\yii\db\ActiveQuery | The query with the relation. | luya\admin\ngrest\plugins\SelectRelationActiveQuery |
$readonly | boolean | Whether the the value is only readable in EDIT scope or not. | luya\admin\ngrest\base\Plugin |
$relation | string | The name of the relation which should be used to load the data. | luya\admin\ngrest\plugins\SelectRelationActiveQuery |
$renderContext | luya\admin\ngrest\render\RenderCrudInterface | The render context object when rendering + {{Plugin::renderList()}} + {{Plugin::renderCreate()}} + {{Plugin::renderUpdate()}} | luya\admin\ngrest\base\Plugin |
$sortField | string|array | Sort field definition (since 2.0.0) | luya\admin\ngrest\base\Plugin |
Public Methods
Method | Description | Defined By |
---|---|---|
__call() | Calls the named method which is not a class method. | yii\base\Component |
__clone() | This method is called after the object is created by cloning an existing one. | yii\base\Component |
__construct() | Constructor. | yii\base\BaseObject |
__get() | Returns the value of a component property. | yii\base\Component |
__isset() | Checks if a property is set, i.e. defined and not null. | yii\base\Component |
__set() | Sets the value of a component property. | yii\base\Component |
__unset() | Sets a component property to be null. | yii\base\Component |
addEvent() | Add an event to the list of events | luya\admin\ngrest\base\Plugin |
attachBehavior() | Attaches a behavior to this component. | yii\base\Component |
attachBehaviors() | Attaches a list of behaviors to the component. | yii\base\Component |
behaviors() | Returns a list of behaviors that this component should behave as. | yii\base\Component |
canGetProperty() | Returns a value indicating whether a property can be read. | yii\base\Component |
canSetProperty() | Returns a value indicating whether a property can be set. | yii\base\Component |
className() | Returns the fully qualified name of this class. | yii\base\BaseObject |
createCrudLoaderTag() | Create a tag for relation window toggler with directive crudLoader based on a ngrest model class. | luya\admin\ngrest\base\Plugin |
createFormTag() | Helper method to create a form tag based on current object. | luya\admin\ngrest\base\Plugin |
createListTag() | Helper method to create a span tag with the ng-model in angular context for the crud overview | luya\admin\ngrest\base\Plugin |
createSchedulerListTag() | Create the Scheulder tag for a given field. | luya\admin\ngrest\base\Plugin |
createTag() | Wrapper for Yii Html::tag method | luya\admin\ngrest\base\Plugin |
detachBehavior() | Detaches a behavior from the component. | yii\base\Component |
detachBehaviors() | Detaches all behaviors from the component. | yii\base\Component |
ensureBehaviors() | Makes sure that the behaviors declared in behaviors() are attached to this component. | yii\base\Component |
events() | An override without calling the parent::events will stop all other events used by default. | luya\admin\ngrest\base\Plugin |
getBehavior() | Returns the named behavior object. | yii\base\Component |
getBehaviors() | Returns all behaviors attached to this component. | yii\base\Component |
getLabelField() | Getter method for Label Field. | luya\admin\ngrest\plugins\SelectRelationActiveQuery |
getNgShowCondition() | Get the ng-show condition from a given ngModel context. | luya\admin\ngrest\base\Plugin |
getQuery() | luya\admin\ngrest\plugins\SelectRelationActiveQuery | |
getServiceName() | Return the defined constant for a angular service instance in the current object. | luya\admin\ngrest\base\Plugin |
getSortField() | Getter method for a sortField definition. | luya\admin\ngrest\base\Plugin |
hasEventHandlers() | Returns a value indicating whether there is any handler attached to the named event. | yii\base\Component |
hasMethod() | Returns a value indicating whether a method is defined. | yii\base\Component |
hasProperty() | Returns a value indicating whether a property is defined for this component. | yii\base\Component |
i18nDecodedGetActive() | Encode the current value from a language array. | luya\admin\ngrest\base\Plugin |
i18nFieldDecode() | Decode from Json to PHP. | luya\admin\ngrest\base\Plugin |
i18nFieldEncode() | Encode from PHP to Json. | luya\admin\ngrest\base\Plugin |
init() | Initializes the object. | luya\admin\ngrest\plugins\SelectRelationActiveQuery |
jsonDecode() | Decodes the given JSON string into a PHP data structure and verifys if its empty, cause this can thrown an json decode exception. | luya\admin\ngrest\base\Plugin |
off() | Detaches an existing event handler from this component. | yii\base\Component |
on() | Attaches an event handler to an event. | yii\base\Component |
onAfterExpandFind() | This event will be triggered after onExpandFind . |
luya\admin\ngrest\base\Plugin |
onAfterFind() | This event will be trigger after onFind . |
luya\admin\ngrest\base\Plugin |
onAfterListFind() | This event will be triggered after onListFind . |
luya\admin\ngrest\base\Plugin |
onAssign() | After attribute value assignment. | luya\admin\ngrest\base\Plugin |
onBeforeCollectServiceData() | This event will be triggered before onCollectServiceData . |
luya\admin\ngrest\base\Plugin |
onBeforeExpandFind() | This event will be triggered before onExpandFind . |
luya\admin\ngrest\base\Plugin |
onBeforeFind() | This event will be trigger before onFind . |
luya\admin\ngrest\base\Plugin |
onBeforeListFind() | This event will be triger before onListFind . |
luya\admin\ngrest\base\Plugin |
onBeforeSave() | This event will be triggered before onSave event. |
luya\admin\ngrest\base\Plugin |
onCollectServiceData() | The ngrest services collector. | luya\admin\ngrest\base\Plugin |
onExpandFind() | NgRest Model crud list/overview event after find. If the property of this plugin inside the model, the event will not be triggered. | luya\admin\ngrest\base\Plugin |
onFind() | ActiveRecord afterFind event. If the property of this plugin inside the model, the event will not be triggered. | luya\admin\ngrest\base\Plugin |
onListFind() | This event is only trigger when returning the ngrest crud list data. | luya\admin\ngrest\plugins\SelectRelationActiveQuery |
onSave() | This event will be triggered onSave event. If the model property is not writeable the event will not trigger. |
luya\admin\ngrest\base\Plugin |
removeEvent() | Remove an event from the events stack by its trigger name. | luya\admin\ngrest\base\Plugin |
renderCreate() | Renders the element for the CRUD CREATE FORM for a specific type. | luya\admin\ngrest\plugins\SelectRelationActiveQuery |
renderList() | Renders the element for the CRUD LIST overview for a specific type. | luya\admin\ngrest\plugins\SelectRelationActiveQuery |
renderUpdate() | Renders the element for the CRUD UPDATE FORM for a specific type. | luya\admin\ngrest\plugins\SelectRelationActiveQuery |
serviceData() | Define the service data which will be called when creating the ngrest crud view. You may override this method in your plugin. | luya\admin\ngrest\base\Plugin |
setLabelField() | Setter method for Label Field. | luya\admin\ngrest\plugins\SelectRelationActiveQuery |
setQuery() | luya\admin\ngrest\plugins\SelectRelationActiveQuery | |
setSortField() | Setter method for sortField | luya\admin\ngrest\base\Plugin |
trigger() | Triggers an event. | yii\base\Component |
Protected Methods
Method | Description | Defined By |
---|---|---|
appendFieldNgModelContext() | Preprends the context name for a certain ng model. | luya\admin\ngrest\base\Plugin |
getAttributeValue() | Get the value from the plugin attribute or property. | luya\admin\ngrest\base\Plugin |
getRelationApiEndpoint() | Get the admin api endpoint name. | luya\admin\ngrest\plugins\SelectRelationActiveQuery |
isAttributeWriteable() | Check whether the current plugin attribute is writeable in the Model class or not. If not writeable some events will be stopped from further processing. This is mainly used when adding extraFields to the grid list view. | luya\admin\ngrest\base\Plugin |
writeAttribute() | Write a value to a plugin attribute or property. | luya\admin\ngrest\base\Plugin |
Constants
Constant | Value | Description | Defined By |
---|---|---|---|
CREATE_CONTEXT_PREFIX | 'create.' | luya\admin\ngrest\base\Plugin | |
LIST_CONTEXT_PREFIX | 'item.' | luya\admin\ngrest\base\Plugin | |
UPDATE_CONTEXT_RPEFXI | 'update.' | luya\admin\ngrest\base\Plugin |
Property Details
If enabled, the frontend value will be loaded from async request in order to keep original list values, this is mainly used when working with composite keys.
This value will be displayed in the ngrest list overview if the given value is empty().
Provide the sql fields to display.
The query with the relation.
The name of the relation which should be used to load the data. For example if you have getPerson()
the relation name would be person
.
In order to reduce sql queries you can eager load the given relation in {{luya\admin\ngrest\base\Api::prepareListQuery()}}:
public function prepareListQuery()
{
return parent::prepareListQuery()->with(['person']);
}
Method Details
Defined in: yii\base\Component::__call()
Calls the named method which is not a class method.
This method will check if any attached behavior has the named method and will execute it if available.
Do not call this method directly as it is a PHP magic method that will be implicitly called when an unknown method is being invoked.
public mixed __call ( $name, $params ) | ||
$name | string |
The method name |
$params | array |
Method parameters |
return | mixed |
The method return value |
---|---|---|
throws | yii\base\UnknownMethodException |
when calling unknown method |
public function __call($name, $params)
{
$this->ensureBehaviors();
foreach ($this->_behaviors as $object) {
if ($object->hasMethod($name)) {
return call_user_func_array([$object, $name], $params);
}
}
throw new UnknownMethodException('Calling unknown method: ' . get_class($this) . "::$name()");
}
Defined in: yii\base\Component::__clone()
This method is called after the object is created by cloning an existing one.
It removes all behaviors because they are attached to the old object.
public void __clone ( ) |
public function __clone()
{
$this->_events = [];
$this->_eventWildcards = [];
$this->_behaviors = null;
}
Defined in: yii\base\BaseObject::__construct()
Constructor.
The default implementation does two things:
- Initializes the object with the given configuration
$config
. - Call init().
If this method is overridden in a child class, it is recommended that
- the last parameter of the constructor is a configuration array, like
$config
here. - call the parent implementation at the end of the constructor.
public void __construct ( $config = [] ) | ||
$config | array |
Name-value pairs that will be used to initialize the object properties |
public function __construct($config = [])
{
if (!empty($config)) {
Yii::configure($this, $config);
}
$this->init();
}
Defined in: yii\base\Component::__get()
Returns the value of a component property.
This method will check in the following order and act accordingly:
- a property defined by a getter: return the getter result
- a property of a behavior: return the behavior property value
Do not call this method directly as it is a PHP magic method that
will be implicitly called when executing $value = $component->property;
.
See also __set().
public mixed __get ( $name ) | ||
$name | string |
The property name |
return | mixed |
The property value or the value of a behavior's property |
---|---|---|
throws | yii\base\UnknownPropertyException |
if the property is not defined |
throws | yii\base\InvalidCallException |
if the property is write-only. |
public function __get($name)
{
$getter = 'get' . $name;
if (method_exists($this, $getter)) {
// read property, e.g. getName()
return $this->$getter();
}
// behavior property
$this->ensureBehaviors();
foreach ($this->_behaviors as $behavior) {
if ($behavior->canGetProperty($name)) {
return $behavior->$name;
}
}
if (method_exists($this, 'set' . $name)) {
throw new InvalidCallException('Getting write-only property: ' . get_class($this) . '::' . $name);
}
throw new UnknownPropertyException('Getting unknown property: ' . get_class($this) . '::' . $name);
}
Defined in: yii\base\Component::__isset()
Checks if a property is set, i.e. defined and not null.
This method will check in the following order and act accordingly:
- a property defined by a setter: return whether the property is set
- a property of a behavior: return whether the property is set
- return
false
for non existing properties
Do not call this method directly as it is a PHP magic method that
will be implicitly called when executing isset($component->property)
.
public boolean __isset ( $name ) | ||
$name | string |
The property name or the event name |
return | boolean |
Whether the named property is set |
---|
public function __isset($name)
{
$getter = 'get' . $name;
if (method_exists($this, $getter)) {
return $this->$getter() !== null;
}
// behavior property
$this->ensureBehaviors();
foreach ($this->_behaviors as $behavior) {
if ($behavior->canGetProperty($name)) {
return $behavior->$name !== null;
}
}
return false;
}
Defined in: yii\base\Component::__set()
Sets the value of a component property.
This method will check in the following order and act accordingly:
- a property defined by a setter: set the property value
- an event in the format of "on xyz": attach the handler to the event "xyz"
- a behavior in the format of "as xyz": attach the behavior named as "xyz"
- a property of a behavior: set the behavior property value
Do not call this method directly as it is a PHP magic method that
will be implicitly called when executing $component->property = $value;
.
See also __get().
public void __set ( $name, $value ) | ||
$name | string |
The property name or the event name |
$value | mixed |
The property value |
throws | yii\base\UnknownPropertyException |
if the property is not defined |
---|---|---|
throws | yii\base\InvalidCallException |
if the property is read-only. |
public function __set($name, $value)
{
$setter = 'set' . $name;
if (method_exists($this, $setter)) {
// set property
$this->$setter($value);
return;
} elseif (strncmp($name, 'on ', 3) === 0) {
// on event: attach event handler
$this->on(trim(substr($name, 3)), $value);
return;
} elseif (strncmp($name, 'as ', 3) === 0) {
// as behavior: attach behavior
$name = trim(substr($name, 3));
$this->attachBehavior($name, $value instanceof Behavior ? $value : Yii::createObject($value));
return;
}
// behavior property
$this->ensureBehaviors();
foreach ($this->_behaviors as $behavior) {
if ($behavior->canSetProperty($name)) {
$behavior->$name = $value;
return;
}
}
if (method_exists($this, 'get' . $name)) {
throw new InvalidCallException('Setting read-only property: ' . get_class($this) . '::' . $name);
}
throw new UnknownPropertyException('Setting unknown property: ' . get_class($this) . '::' . $name);
}
Defined in: yii\base\Component::__unset()
Sets a component property to be null.
This method will check in the following order and act accordingly:
- a property defined by a setter: set the property value to be null
- a property of a behavior: set the property value to be null
Do not call this method directly as it is a PHP magic method that
will be implicitly called when executing unset($component->property)
.
public void __unset ( $name ) | ||
$name | string |
The property name |
throws | yii\base\InvalidCallException |
if the property is read only. |
---|
public function __unset($name)
{
$setter = 'set' . $name;
if (method_exists($this, $setter)) {
$this->$setter(null);
return;
}
// behavior property
$this->ensureBehaviors();
foreach ($this->_behaviors as $behavior) {
if ($behavior->canSetProperty($name)) {
$behavior->$name = null;
return;
}
}
throw new InvalidCallException('Unsetting an unknown or read-only property: ' . get_class($this) . '::' . $name);
}
Defined in: luya\admin\ngrest\base\Plugin::addEvent()
Add an event to the list of events
public void addEvent ( $trigger, $handler ) | ||
$trigger | string |
ActiveRecord event name |
$handler | string |
Method-Name inside this object |
public function addEvent($trigger, $handler)
{
$this->_events[$trigger] = $handler;
}
Defined in: luya\admin\ngrest\base\Plugin::appendFieldNgModelContext()
Preprends the context name for a certain ng model.
As the angular attributes have different names in different contexts, this will append the correct context.
$this->appendFieldNgModelContext('myfieldname', self::LIST_CONTEXT_PREFIX);
protected string appendFieldNgModelContext ( $field, $context ) | ||
$field | string | |
$context | string |
protected function appendFieldNgModelContext($field, $context)
{
return $context . ltrim($field, '.');
}
Defined in: yii\base\Component::attachBehavior()
Attaches a behavior to this component.
This method will create the behavior object based on the given configuration. After that, the behavior object will be attached to this component by calling the yii\base\Behavior::attach() method.
See also detachBehavior().
public yii\base\Behavior attachBehavior ( $name, $behavior ) | ||
$name | string |
The name of the behavior. |
$behavior | string|array|yii\base\Behavior |
The behavior configuration. This can be one of the following:
|
return | yii\base\Behavior |
The behavior object |
---|
public function attachBehavior($name, $behavior)
{
$this->ensureBehaviors();
return $this->attachBehaviorInternal($name, $behavior);
}
Defined in: yii\base\Component::attachBehaviors()
Attaches a list of behaviors to the component.
Each behavior is indexed by its name and should be a yii\base\Behavior object, a string specifying the behavior class, or an configuration array for creating the behavior.
See also attachBehavior().
public void attachBehaviors ( $behaviors ) | ||
$behaviors | array |
List of behaviors to be attached to the component |
public function attachBehaviors($behaviors)
{
$this->ensureBehaviors();
foreach ($behaviors as $name => $behavior) {
$this->attachBehaviorInternal($name, $behavior);
}
}
Defined in: yii\base\Component::behaviors()
Returns a list of behaviors that this component should behave as.
Child classes may override this method to specify the behaviors they want to behave as.
The return value of this method should be an array of behavior objects or configurations indexed by behavior names. A behavior configuration can be either a string specifying the behavior class or an array of the following structure:
'behaviorName' => [
'class' => 'BehaviorClass',
'property1' => 'value1',
'property2' => 'value2',
]
Note that a behavior class must extend from yii\base\Behavior. Behaviors can be attached using a name or anonymously. When a name is used as the array key, using this name, the behavior can later be retrieved using getBehavior() or be detached using detachBehavior(). Anonymous behaviors can not be retrieved or detached.
Behaviors declared in this method will be attached to the component automatically (on demand).
public array behaviors ( ) | ||
return | array |
The behavior configurations. |
---|
public function behaviors()
{
return [];
}
Defined in: yii\base\Component::canGetProperty()
Returns a value indicating whether a property can be read.
A property can be read if:
- the class has a getter method associated with the specified name (in this case, property name is case-insensitive);
- the class has a member variable with the specified name (when
$checkVars
is true); - an attached behavior has a readable property of the given name (when
$checkBehaviors
is true).
See also canSetProperty().
public boolean canGetProperty ( $name, $checkVars = true, $checkBehaviors = true ) | ||
$name | string |
The property name |
$checkVars | boolean |
Whether to treat member variables as properties |
$checkBehaviors | boolean |
Whether to treat behaviors' properties as properties of this component |
return | boolean |
Whether the property can be read |
---|
public function canGetProperty($name, $checkVars = true, $checkBehaviors = true)
{
if (method_exists($this, 'get' . $name) || $checkVars && property_exists($this, $name)) {
return true;
} elseif ($checkBehaviors) {
$this->ensureBehaviors();
foreach ($this->_behaviors as $behavior) {
if ($behavior->canGetProperty($name, $checkVars)) {
return true;
}
}
}
return false;
}
Defined in: yii\base\Component::canSetProperty()
Returns a value indicating whether a property can be set.
A property can be written if:
- the class has a setter method associated with the specified name (in this case, property name is case-insensitive);
- the class has a member variable with the specified name (when
$checkVars
is true); - an attached behavior has a writable property of the given name (when
$checkBehaviors
is true).
See also canGetProperty().
public boolean canSetProperty ( $name, $checkVars = true, $checkBehaviors = true ) | ||
$name | string |
The property name |
$checkVars | boolean |
Whether to treat member variables as properties |
$checkBehaviors | boolean |
Whether to treat behaviors' properties as properties of this component |
return | boolean |
Whether the property can be written |
---|
public function canSetProperty($name, $checkVars = true, $checkBehaviors = true)
{
if (method_exists($this, 'set' . $name) || $checkVars && property_exists($this, $name)) {
return true;
} elseif ($checkBehaviors) {
$this->ensureBehaviors();
foreach ($this->_behaviors as $behavior) {
if ($behavior->canSetProperty($name, $checkVars)) {
return true;
}
}
}
return false;
}
::class
instead.
Defined in: yii\base\BaseObject::className()
Returns the fully qualified name of this class.
public static string className ( ) | ||
return | string |
The fully qualified name of this class. |
---|
public static function className()
{
return get_called_class();
}
Defined in: luya\admin\ngrest\base\Plugin::createCrudLoaderTag()
Create a tag for relation window toggler with directive crudLoader based on a ngrest model class.
public string createCrudLoaderTag ( $ngrestModelClass, $ngRestModelSelectMode = null, array $options = [] ) | ||
$ngrestModelClass | string | |
$ngRestModelSelectMode | ||
$options | ||
return | string |
The generated tag or null if permission does not exists |
---|
public function createCrudLoaderTag($ngrestModelClass, $ngRestModelSelectMode = null, array $options = [])
{
if (!method_exists($ngrestModelClass, 'ngRestApiEndpoint')) {
return null;
}
$menu = Yii::$app->adminmenu->getApiDetail($ngrestModelClass::ngRestApiEndpoint(), Yii::$app->request->get('pool'));
if ($menu) {
if ($ngRestModelSelectMode) {
$options['model-setter'] = $ngRestModelSelectMode;
$options['model-selection'] = 1;
} else {
$options['model-selection'] = 0;
}
return $this->createTag('crud-loader', null, array_merge(['api' => $menu['route'], 'alias' => $menu['alias']], $options));
}
return null;
}
Defined in: luya\admin\ngrest\base\Plugin::createFormTag()
Helper method to create a form tag based on current object.
public string createFormTag ( $name, $id, $ngModel, array $options = [] ) | ||
$name | string |
Name of the form tag. |
$id | string |
The id tag of the tag. |
$ngModel | string |
The ngrest model name of the tag. |
$options | array |
Options to passes to the tag creator. |
return | string |
The generated tag content. |
---|
public function createFormTag($name, $id, $ngModel, array $options = [])
{
$defaultOptions = [
'fieldid' => $id,
'model' => $ngModel,
'label' => $this->alias,
'fieldname' => $this->name,
'i18n' => $this->i18n ? 1 : '',
];
// if a condition is available, evalute from given context
if ($this->condition) {
$defaultOptions['ng-show'] = $this->getNgShowCondition($ngModel);
}
return $this->createTag($name, null, array_merge($options, $defaultOptions));
}
Defined in: luya\admin\ngrest\base\Plugin::createListTag()
Helper method to create a span tag with the ng-model in angular context for the crud overview
public string createListTag ( $ngModel, array $options = [] ) | ||
$ngModel | string | |
$options | array |
An array with options to pass to the list tag |
public function createListTag($ngModel, array $options = [])
{
return $this->createTag('span', null, ArrayHelper::merge(['ng-bind' => $ngModel], $options));
}
Defined in: luya\admin\ngrest\base\Plugin::createSchedulerListTag()
Create the Scheulder tag for a given field.
The scheduler tag allows you to change the given field value based on input values for a given field if a model is ailable.
public string createSchedulerListTag ( $ngModel, array $values, $dataRow, array $options = [] ) | ||
$ngModel | string |
The string to |
$values | array |
An array with values to display |
$dataRow | string |
The data row context (item) |
$options | array |
|
public function createSchedulerListTag($ngModel, array $values, $dataRow, array $options = [])
{
return Angular::schedule($ngModel, $this->alias, 'getRowPrimaryValue('.$dataRow.')', $values, get_class($this->renderContext->getModel()), $this->name, $options)->render();
}
Defined in: luya\admin\ngrest\base\Plugin::createTag()
Wrapper for Yii Html::tag method
public string createTag ( $name, $content, array $options = [] ) | ||
$name | string |
The name of the tag |
$content | string |
The value inside the tag. |
$options | array |
Options to passed to the tag generator. |
return | string |
The generated html string tag. |
---|
public function createTag($name, $content, array $options = [])
{
return Html::tag($name, $content, $options);
}
Defined in: yii\base\Component::detachBehavior()
Detaches a behavior from the component.
The behavior's yii\base\Behavior::detach() method will be invoked.
public yii\base\Behavior|null detachBehavior ( $name ) | ||
$name | string |
The behavior's name. |
return | yii\base\Behavior|null |
The detached behavior. Null if the behavior does not exist. |
---|
public function detachBehavior($name)
{
$this->ensureBehaviors();
if (isset($this->_behaviors[$name])) {
$behavior = $this->_behaviors[$name];
unset($this->_behaviors[$name]);
$behavior->detach();
return $behavior;
}
return null;
}
Defined in: yii\base\Component::detachBehaviors()
Detaches all behaviors from the component.
public void detachBehaviors ( ) |
public function detachBehaviors()
{
$this->ensureBehaviors();
foreach ($this->_behaviors as $name => $behavior) {
$this->detachBehavior($name);
}
}
Defined in: yii\base\Component::ensureBehaviors()
Makes sure that the behaviors declared in behaviors() are attached to this component.
public void ensureBehaviors ( ) |
public function ensureBehaviors()
{
if ($this->_behaviors === null) {
$this->_behaviors = [];
foreach ($this->behaviors() as $name => $behavior) {
$this->attachBehaviorInternal($name, $behavior);
}
}
}
Defined in: luya\admin\ngrest\base\Plugin::events()
An override without calling the parent::events will stop all other events used by default.
public array events ( ) |
public function events()
{
return $this->_events;
}
Defined in: luya\admin\ngrest\base\Plugin::getAttributeValue()
Get the value from the plugin attribute or property.
protected mixed getAttributeValue ( $event ) | ||
$event | yii\base\Event |
The event to retrieve the values from (via $sender property). |
protected function getAttributeValue($event)
{
$property = $this->name;
return $event->sender->{$property};
}
Defined in: yii\base\Component::getBehavior()
Returns the named behavior object.
public yii\base\Behavior|null getBehavior ( $name ) | ||
$name | string |
The behavior name |
return | yii\base\Behavior|null |
The behavior object, or null if the behavior does not exist |
---|
public function getBehavior($name)
{
$this->ensureBehaviors();
return isset($this->_behaviors[$name]) ? $this->_behaviors[$name] : null;
}
Defined in: yii\base\Component::getBehaviors()
Returns all behaviors attached to this component.
public yii\base\Behavior[] getBehaviors ( ) | ||
return | yii\base\Behavior[] |
List of behaviors attached to this component |
---|
public function getBehaviors()
{
$this->ensureBehaviors();
return $this->_behaviors;
}
Getter method for Label Field.
public array getLabelField ( ) |
public function getLabelField()
{
return $this->_labelField;
}
Defined in: luya\admin\ngrest\base\Plugin::getNgShowCondition()
Get the ng-show condition from a given ngModel context.
Evaluates the ng-show condition from a given ngModel context. A condition like
{field} == true
would return data.create.field == true
.
public string getNgShowCondition ( $ngModel ) | ||
$ngModel | string |
The ngModel to get the context informations from. |
return | string |
Returns the condition with replaced field context like |
---|
public function getNgShowCondition($ngModel)
{
return Angular::variablizeContext($ngModel, $this->condition, false);
}
Get the admin api endpoint name.
protected string getRelationApiEndpoint ( ) |
protected function getRelationApiEndpoint()
{
// build class name
$class = $this->_query->modelClass;
// fetch menu api detail from endpoint name
$menu = Yii::$app->adminmenu->getApiDetail($class::ngRestApiEndpoint());
if (!$menu) {
throw new InvalidConfigException("Unable to find the API endpoint, maybe insufficent permission or missing admin module context (admin module prefix).");
}
// @todo what about: admin/
return 'admin/'.$menu['permissionApiEndpoint'];
}
Defined in: luya\admin\ngrest\base\Plugin::getServiceName()
Return the defined constant for a angular service instance in the current object.
public string getServiceName ( $name ) | ||
$name | string |
The name of the service defined as array key in |
public function getServiceName($name)
{
return 'service.'.$this->name.'.'.$name;
}
Defined in: luya\admin\ngrest\base\Plugin::getSortField()
Getter method for a sortField definition.
If no sortField definition has been set, the plugin attribute name is used.
public array getSortField ( ) |
public function getSortField()
{
if ($this->_sortField === false) {
return [];
}
if ($this->_sortField) {
//
if (is_array($this->_sortField)) {
return [$this->name => $this->_sortField];
}
return [$this->name => [
'asc' => [$this->_sortField => SORT_ASC],
'desc' => [$this->_sortField => SORT_DESC]
]];
}
return [$this->name];
}
Defined in: yii\base\Component::hasEventHandlers()
Returns a value indicating whether there is any handler attached to the named event.
public boolean hasEventHandlers ( $name ) | ||
$name | string |
The event name |
return | boolean |
Whether there is any handler attached to the event. |
---|
public function hasEventHandlers($name)
{
$this->ensureBehaviors();
if (!empty($this->_events[$name])) {
return true;
}
foreach ($this->_eventWildcards as $wildcard => $handlers) {
if (!empty($handlers) && StringHelper::matchWildcard($wildcard, $name)) {
return true;
}
}
return Event::hasHandlers($this, $name);
}
Defined in: yii\base\Component::hasMethod()
Returns a value indicating whether a method is defined.
A method is defined if:
- the class has a method with the specified name
- an attached behavior has a method with the given name (when
$checkBehaviors
is true).
public boolean hasMethod ( $name, $checkBehaviors = true ) | ||
$name | string |
The property name |
$checkBehaviors | boolean |
Whether to treat behaviors' methods as methods of this component |
return | boolean |
Whether the method is defined |
---|
public function hasMethod($name, $checkBehaviors = true)
{
if (method_exists($this, $name)) {
return true;
} elseif ($checkBehaviors) {
$this->ensureBehaviors();
foreach ($this->_behaviors as $behavior) {
if ($behavior->hasMethod($name)) {
return true;
}
}
}
return false;
}
Defined in: yii\base\Component::hasProperty()
Returns a value indicating whether a property is defined for this component.
A property is defined if:
- the class has a getter or setter method associated with the specified name (in this case, property name is case-insensitive);
- the class has a member variable with the specified name (when
$checkVars
is true); - an attached behavior has a property of the given name (when
$checkBehaviors
is true).
See also:
public boolean hasProperty ( $name, $checkVars = true, $checkBehaviors = true ) | ||
$name | string |
The property name |
$checkVars | boolean |
Whether to treat member variables as properties |
$checkBehaviors | boolean |
Whether to treat behaviors' properties as properties of this component |
return | boolean |
Whether the property is defined |
---|
public function hasProperty($name, $checkVars = true, $checkBehaviors = true)
{
return $this->canGetProperty($name, $checkVars, $checkBehaviors) || $this->canSetProperty($name, false, $checkBehaviors);
}
Defined in: luya\admin\ngrest\base\Plugin::i18nDecodedGetActive()
Encode the current value from a language array.
See {{luya\admin\helpers\I18n::findActive}}
public string i18nDecodedGetActive ( array $fieldValues ) | ||
$fieldValues | array |
public function i18nDecodedGetActive(array $fieldValues)
{
trigger_error('deprecated, use I18n::findActive instead. Will be removed in version 5.0', E_USER_DEPRECATED);
return I18n::findActive($fieldValues);
}
Defined in: luya\admin\ngrest\base\Plugin::i18nFieldDecode()
Decode from Json to PHP.
See {{luya\admin\helpers\I18n::decode}}
public array i18nFieldDecode ( $value, $onEmptyValue = '' ) | ||
$value | string|array |
The value to decode (or if alreay is an array already) |
$onEmptyValue | string |
Defines the value if the language could not be found and a value will be returns, this value will be used. |
return | array |
Returns an array with decoded field value |
---|
public function i18nFieldDecode($value, $onEmptyValue = '')
{
trigger_error('deprecated, use I18n::decode instead. Will be removed in version 5.0', E_USER_DEPRECATED);
return I18n::decode($value, $onEmptyValue);
}
Defined in: luya\admin\ngrest\base\Plugin::i18nFieldEncode()
Encode from PHP to Json.
See {{luya\admin\helpers\I18n::encode}}
public string i18nFieldEncode ( $value ) | ||
$value | string|array | |
return | string |
Returns a string |
---|
public function i18nFieldEncode($value)
{
trigger_error('deprecated, use I18n::encode instead. Will be removed in version 5.0', E_USER_DEPRECATED);
return I18n::encode($value);
}
Initializes the object.
This method is invoked at the end of the constructor after the object is initialized with the given configuration.
public void init ( ) |
public function init()
{
parent::init();
if (empty($this->labelField)) {
throw new InvalidConfigException("The labelField property can not be empty.");
}
}
Defined in: luya\admin\ngrest\base\Plugin::isAttributeWriteable()
Check whether the current plugin attribute is writeable in the Model class or not. If not writeable some events will be stopped from further processing. This is mainly used when adding extraFields to the grid list view.
protected boolean isAttributeWriteable ( $event ) | ||
$event | yii\base\Event |
The current base event object. |
return | boolean |
Whether the current plugin attribute is writeable or not. |
---|
protected function isAttributeWriteable($event)
{
return ($event->sender->hasAttribute($this->name) || $event->sender->canSetProperty($this->name));
}
Defined in: luya\admin\ngrest\base\Plugin::jsonDecode()
Decodes the given JSON string into a PHP data structure and verifys if its empty, cause this can thrown an json decode exception.
public array jsonDecode ( $value ) | ||
$value | string |
The string to decode from json to php. |
return | array |
The PHP array. |
---|
public function jsonDecode($value)
{
return empty($value) ? [] : Json::decode($value);
}
Defined in: yii\base\Component::off()
Detaches an existing event handler from this component.
This method is the opposite of on().
Note: in case wildcard pattern is passed for event name, only the handlers registered with this wildcard will be removed, while handlers registered with plain names matching this wildcard will remain.
See also on().
public boolean off ( $name, $handler = null ) | ||
$name | string |
Event name |
$handler | callable|null |
The event handler to be removed. If it is null, all handlers attached to the named event will be removed. |
return | boolean |
If a handler is found and detached |
---|
public function off($name, $handler = null)
{
$this->ensureBehaviors();
if (empty($this->_events[$name]) && empty($this->_eventWildcards[$name])) {
return false;
}
if ($handler === null) {
unset($this->_events[$name], $this->_eventWildcards[$name]);
return true;
}
$removed = false;
// plain event names
if (isset($this->_events[$name])) {
foreach ($this->_events[$name] as $i => $event) {
if ($event[0] === $handler) {
unset($this->_events[$name][$i]);
$removed = true;
}
}
if ($removed) {
$this->_events[$name] = array_values($this->_events[$name]);
return true;
}
}
// wildcard event names
if (isset($this->_eventWildcards[$name])) {
foreach ($this->_eventWildcards[$name] as $i => $event) {
if ($event[0] === $handler) {
unset($this->_eventWildcards[$name][$i]);
$removed = true;
}
}
if ($removed) {
$this->_eventWildcards[$name] = array_values($this->_eventWildcards[$name]);
// remove empty wildcards to save future redundant regex checks:
if (empty($this->_eventWildcards[$name])) {
unset($this->_eventWildcards[$name]);
}
}
}
return $removed;
}
Defined in: yii\base\Component::on()
Attaches an event handler to an event.
The event handler must be a valid PHP callback. The following are some examples:
function ($event) { ... } // anonymous function
[$object, 'handleClick'] // $object->handleClick()
['Page', 'handleClick'] // Page::handleClick()
'handleClick' // global function handleClick()
The event handler must be defined with the following signature,
function ($event)
where $event
is an yii\base\Event object which includes parameters associated with the event.
Since 2.0.14 you can specify event name as a wildcard pattern:
$component->on('event.group.*', function ($event) {
Yii::trace($event->name . ' is triggered.');
});
See also off().
public void on ( $name, $handler, $data = null, $append = true ) | ||
$name | string |
The event name |
$handler | callable |
The event handler |
$data | mixed |
The data to be passed to the event handler when the event is triggered. When the event handler is invoked, this data can be accessed via yii\base\Event::$data. |
$append | boolean |
Whether to append new event handler to the end of the existing handler list. If false, the new handler will be inserted at the beginning of the existing handler list. |
public function on($name, $handler, $data = null, $append = true)
{
$this->ensureBehaviors();
if (strpos($name, '*') !== false) {
if ($append || empty($this->_eventWildcards[$name])) {
$this->_eventWildcards[$name][] = [$handler, $data];
} else {
array_unshift($this->_eventWildcards[$name], [$handler, $data]);
}
return;
}
if ($append || empty($this->_events[$name])) {
$this->_events[$name][] = [$handler, $data];
} else {
array_unshift($this->_events[$name], [$handler, $data]);
}
}
Defined in: luya\admin\ngrest\base\Plugin::onAfterExpandFind()
This event will be triggered after onExpandFind
.
public boolean onAfterExpandFind ( $event ) | ||
$event |
public function onAfterExpandFind($event)
{
return true;
}
Defined in: luya\admin\ngrest\base\Plugin::onAfterFind()
This event will be trigger after onFind
.
public boolean onAfterFind ( $event ) | ||
$event | yii\base\Event |
An event that is triggered after the record is created and populated with query result. |
public function onAfterFind($event)
{
return true;
}
Defined in: luya\admin\ngrest\base\Plugin::onAfterListFind()
This event will be triggered after onListFind
.
public boolean onAfterListFind ( $event ) | ||
$event |
public function onAfterListFind($event)
{
return true;
}
Defined in: luya\admin\ngrest\base\Plugin::onAssign()
After attribute value assignment.
This event will trigger on:
- AfterInsert
- AfterUpdate
- AfterRefresh
The main purpose is to ensure html encoding when the model is not populated with after find from the database.
public void onAssign ( $event ) | ||
$event | yii\base\ModelEvent |
When the database entry after insert, after update, after refresh. |
public function onAssign($event)
{
}
Defined in: luya\admin\ngrest\base\Plugin::onBeforeCollectServiceData()
This event will be triggered before onCollectServiceData
.
public boolean onBeforeCollectServiceData ( $event ) | ||
$event |
public function onBeforeCollectServiceData($event)
{
return true;
}
Defined in: luya\admin\ngrest\base\Plugin::onBeforeExpandFind()
This event will be triggered before onExpandFind
.
public boolean onBeforeExpandFind ( $event ) | ||
$event |
public function onBeforeExpandFind($event)
{
return true;
}
Defined in: luya\admin\ngrest\base\Plugin::onBeforeFind()
This event will be trigger before onFind
.
public boolean onBeforeFind ( $event ) | ||
$event | yii\base\Event |
An event that is triggered after the record is created and populated with query result. |
public function onBeforeFind($event)
{
return true;
}
Defined in: luya\admin\ngrest\base\Plugin::onBeforeListFind()
This event will be triger before onListFind
.
public boolean onBeforeListFind ( $event ) | ||
$event |
public function onBeforeListFind($event)
{
if ($this->beforeListFind) {
$this->writeAttribute($event, call_user_func_array($this->beforeListFind, [$this->getAttributeValue($event), $event->sender]));
return false;
}
return true;
}
Defined in: luya\admin\ngrest\base\Plugin::onBeforeSave()
This event will be triggered before onSave
event.
public boolean onBeforeSave ( $event ) | ||
$event | yii\db\AfterSaveEvent |
AfterSaveEvent represents the information available in yii\db\ActiveRecord::EVENT_AFTER_INSERT and yii\db\ActiveRecord::EVENT_AFTER_UPDATE. |
public function onBeforeSave($event)
{
return true;
}
Defined in: luya\admin\ngrest\base\Plugin::onCollectServiceData()
The ngrest services collector.
The service event is async to the other events, which means the service event collects data before the other events are called.
public void onCollectServiceData ( $event ) | ||
$event |
public function onCollectServiceData($event)
{
if ($this->onBeforeCollectServiceData($event)) {
$data = $this->serviceData($event);
if (!empty($data)) {
$event->sender->addNgRestServiceData($this->name, $data);
}
}
}
Defined in: luya\admin\ngrest\base\Plugin::onExpandFind()
NgRest Model crud list/overview event after find. If the property of this plugin inside the model, the event will not be triggered.
public void onExpandFind ( $event ) | ||
$event |
public function onExpandFind($event)
{
if ($this->isAttributeWriteable($event) && $this->onBeforeExpandFind($event)) {
if ($this->i18n) {
$event->sender->setAttribute(
$this->name,
I18n::decode($event->sender->getAttribute($this->name), $this->i18nEmptyValue)
);
}
$this->onAfterExpandFind($event);
}
}
Defined in: luya\admin\ngrest\base\Plugin::onFind()
ActiveRecord afterFind event. If the property of this plugin inside the model, the event will not be triggered.
public void onFind ( $event ) | ||
$event | yii\base\Event |
An event that is triggered after the record is created and populated with query result. |
public function onFind($event)
{
if ($this->isAttributeWriteable($event) && $this->onBeforeFind($event)) {
if ($this->i18n) {
$oldValue = $event->sender->getAttribute($this->name);
$event->sender->setI18nOldValue($this->name, $oldValue);
// get the new array value from an i18n json attribute
$value = I18n::decodeFindActive($oldValue, $this->i18nEmptyValue);
// set the new attribute value
$event->sender->setAttribute($this->name, $value);
// override the old attribute value in order to ensure this attribute is not marked as dirty
// see: https://github.com/luyadev/luya-module-admin/pull/567
$event->sender->setOldAttribute($this->name, $value);
}
$this->onAfterFind($event);
}
}
This event is only trigger when returning the ngrest crud list data.
If the attribute is not inside the model (property not writeable), the event will not be triggered. Ensure its a public property or contains getter/setter methods.
public void onListFind ( $event ) | ||
$event |
public function onListFind($event)
{
// async list ignores the onListFind event
if ($this->asyncList) {
return;
}
// ensure a value exists for the given field.
$value = $event->sender->getAttribute($this->name);
// render empty list value
if ($this->emptyListValue && empty($value)) {
return $this->writeAttribute($event, $this->emptyListValue);
}
// if a relation is defined, take the relation to render the value
if ($this->relation) {
$model = $event->sender->{$this->relation};
// unable to find the model relation. Maybe an old entry
if (!$model) {
return;
}
$values = $model->toArray($this->labelField);
$row = [];
foreach ($this->labelField as $name) {
$row[] = $values[$name];
}
return $this->writeAttribute($event, implode(" ", $row));
}
// fallback solution to load relation by a query, not recommend.
$model = $this->_query->modelClass;
$row = $model::ngRestFind()->select($this->labelField)->where(['id' => $value])->asArray(true)->one();
// unable to find the given model
if (!$row) {
return;
}
$row = array_map(function ($fieldValue, $fieldName) use ($model) {
if ((new $model())->isI18n($fieldName)) {
return I18n::decodeFindActive($fieldValue);
}
return $fieldValue;
}, $row, array_keys($row));
return $this->writeAttribute($event, implode(" ", $row));
}
Defined in: luya\admin\ngrest\base\Plugin::onSave()
This event will be triggered onSave
event. If the model property is not writeable the event will not trigger.
If the beforeSave method returns true and i18n is enabled, the value will be json encoded.
public void onSave ( $event ) | ||
$event | yii\base\ModelEvent |
ModelEvent represents the information available in yii\db\ActiveRecord::EVENT_BEFORE_VALIDATE. |
public function onSave($event)
{
if ($this->isAttributeWriteable($event) && $this->onBeforeSave($event)) {
if ($this->i18n) {
$event->sender->setAttribute($this->name, I18n::encode($event->sender->getAttribute($this->name)));
}
}
}
Defined in: luya\admin\ngrest\base\Plugin::removeEvent()
Remove an event from the events stack by its trigger name.
In order to remove an event trigger from stack you have to do this right after the initializer.
public function init()
{
parent::init();
$this->removeEvent(NgRestModel::EVENT_AFTER_FIND);
}
public void removeEvent ( $trigger ) | ||
$trigger | string |
The event trigger name from the EVENT constants. |
public function removeEvent($trigger)
{
if (isset($this->_events[$trigger])) {
unset($this->_events[$trigger]);
}
}
Renders the element for the CRUD CREATE FORM for a specific type.
public string|array renderCreate ( $id, $ngModel ) | ||
$id | string |
The ID of the element in the current context |
$ngModel | string |
The name to access the data in angular context. |
return | string|array |
Returns the html element as a string or an array which will be concated |
---|
public function renderCreate($id, $ngModel)
{
return [
$this->createCrudLoaderTag($this->_query->modelClass, $ngModel),
$this->createFormTag('zaa-async-value', $id, $ngModel, ['api' => $this->getRelationApiEndpoint(), 'fields' => Json::encode($this->labelField)])
];
}
Renders the element for the CRUD LIST overview for a specific type.
public string|array renderList ( $id, $ngModel ) | ||
$id | string |
The ID of the element in the current context |
$ngModel | string |
The name to access the data in angular context. |
return | string|array |
Returns the html element as a string or an array which will be concated |
---|
public function renderList($id, $ngModel)
{
if ($this->asyncList) {
return $this->createTag('async-value', null, ['api' => $this->getRelationApiEndpoint(), 'model' => $ngModel, 'fields' => Json::encode($this->labelField)]);
}
return $this->createListTag($ngModel);
}
Renders the element for the CRUD UPDATE FORM for a specific type.
public string|array renderUpdate ( $id, $ngModel ) | ||
$id | string |
The ID of the element in the current context |
$ngModel | string |
The name to access the data in angular context. |
return | string|array |
Returns the html element as a string or an array which will be concated |
---|
public function renderUpdate($id, $ngModel)
{
return $this->renderCreate($id, $ngModel);
}
Defined in: luya\admin\ngrest\base\Plugin::serviceData()
Define the service data which will be called when creating the ngrest crud view. You may override this method in your plugin.
Example Response
return [
'titles' => ['mr, 'mrs'];
];
The above service data can be used when creating the tags with $this->getServiceName('titles')
.
public boolean|array serviceData ( $event ) | ||
$event | yii\base\Event |
The event sender which triggers the event. |
public function serviceData($event)
{
return false;
}
Setter method for Label Field.
public void setLabelField ( $labelField ) | ||
$labelField | string|array |
The fields to display based on the sql table seperated by commas or as array. |
public function setLabelField($labelField)
{
if (is_string($labelField)) {
$labelField = explode(",", $labelField);
}
$this->_labelField = $labelField;
}
public void setQuery ( yii\db\ActiveQuery $query ) | ||
$query | \luya\admin\ngrest\plugins\yii\db\ActiveQuery |
public function setQuery(ActiveQuery $query)
{
$this->_query = $query;
}
Defined in: luya\admin\ngrest\base\Plugin::setSortField()
Setter method for sortField
See also https://www.yiiframework.com/doc/api/2.0/yii-data-sort#$attributes-detail.
public void setSortField ( $field ) | ||
$field | string|array |
A sort field definition, this can be either a string
Or you have an ngrest attribute which does not exists in the database, so you can define the original sorting attribute:
which is equals to
A very common scenario when define sortField is when display a value from a relation, therefore you need to prepare the data provider inside the API in order to join the relation (joinWith(['relationName])) aftewards you can use the table name
There are situations you might turn of the sorting for the given attribute therefore just sortfield to false:
In order to enable order by counting of relation tables update the APIs {{luya\admin\ngrest\base\Api::prepareListQuery()}} with the given sub select condition where the alias name is equal to the field to sort:
Where in the above example |
public function setSortField($field)
{
$this->_sortField = $field;
}
Defined in: yii\base\Component::trigger()
Triggers an event.
This method represents the happening of an event. It invokes all attached handlers for the event including class-level handlers.
public void trigger ( $name, yii\base\Event $event = null ) | ||
$name | string |
The event name |
$event | yii\base\Event|null |
The event instance. If not set, a default yii\base\Event object will be created. |
public function trigger($name, Event $event = null)
{
$this->ensureBehaviors();
$eventHandlers = [];
foreach ($this->_eventWildcards as $wildcard => $handlers) {
if (StringHelper::matchWildcard($wildcard, $name)) {
$eventHandlers[] = $handlers;
}
}
if (!empty($this->_events[$name])) {
$eventHandlers[] = $this->_events[$name];
}
if (!empty($eventHandlers)) {
$eventHandlers = call_user_func_array('array_merge', $eventHandlers);
if ($event === null) {
$event = new Event();
}
if ($event->sender === null) {
$event->sender = $this;
}
$event->handled = false;
$event->name = $name;
foreach ($eventHandlers as $handler) {
$event->data = $handler[1];
call_user_func($handler[0], $event);
// stop further handling if the event is handled
if ($event->handled) {
return;
}
}
}
// invoke class-level attached handlers
Event::trigger($this, $name, $event);
}
Defined in: luya\admin\ngrest\base\Plugin::writeAttribute()
Write a value to a plugin attribute or property.
As setAttribute() does only write to attributes therefore this method allwos you to write to a property or attribute value. As {{isAttributeWriteAble()}} returns true whether its a property or attribute.
protected void writeAttribute ( $event, $value ) | ||
$event | yii\base\Event |
The event to retrieve the values from (via $sender property). |
$value | mixed |
The value to writte on the attribute or property. |
protected function writeAttribute($event, $value)
{
$property = $this->name;
$event->sender->{$property} = $value;
}