Class luya\admin\models\User
User Model represents all Administration Users.
Public Properties
Protected Properties
Property | Type | Description | Defined By |
---|---|---|---|
$ngRestServiceArray | luya\admin\ngrest\base\NgRestModel |
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\Model |
__construct() | Constructor. | luya\admin\ngrest\base\NgRestModel |
__get() | PHP getter magic method. | yii\db\BaseActiveRecord |
__isset() | Checks if a property value is null. | yii\db\BaseActiveRecord |
__set() | PHP setter magic method. | yii\db\BaseActiveRecord |
__unset() | Sets a component property to be null. | yii\db\BaseActiveRecord |
activeAttributes() | Returns the attribute names that are subject to validation in the current scenario. | yii\base\Model |
addError() | Adds a new error to the specified attribute. | yii\base\Model |
addErrors() | Adds a list of errors. | yii\base\Model |
addNgRestServiceData() | luya\admin\ngrest\base\NgRestModel | |
afterDelete() | This method is invoked after deleting a record. | yii\db\BaseActiveRecord |
afterFind() | This method is called when the AR object is created and populated with the query result. | luya\admin\ngrest\base\NgRestModel |
afterRefresh() | This method is called when the AR object is refreshed. | yii\db\BaseActiveRecord |
afterSave() | This method is called at the end of inserting or updating a record. | yii\db\BaseActiveRecord |
afterValidate() | This method is invoked after validation ends. | yii\base\Model |
attachBehavior() | Attaches a behavior to this component. | yii\base\Component |
attachBehaviors() | Attaches a list of behaviors to the component. | yii\base\Component |
attributeHints() | Returns the attribute hints. | yii\base\Model |
attributeLabels() | Returns the attribute labels. | luya\admin\models\User |
attributes() | Returns the list of all attribute names of the model. | yii\db\ActiveRecord |
beforeDelete() | This method is invoked before deleting a record. | yii\db\BaseActiveRecord |
beforeSave() | This method is called at the beginning of inserting or updating a record. | yii\db\BaseActiveRecord |
beforeValidate() | This method is invoked before validation starts. | yii\base\Model |
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\db\BaseActiveRecord |
canSetProperty() | Returns a value indicating whether a property can be set. | yii\db\BaseActiveRecord |
changePassword() | The method which is going to change the password on the current model. | luya\admin\models\User |
className() | Returns the fully qualified name of this class. | yii\base\BaseObject |
clearErrors() | Removes errors for all attributes or a single attribute. | yii\base\Model |
createValidators() | Creates validator objects based on the validation rules specified in rules(). | yii\base\Model |
delete() | Deletes the table row corresponding to this active record. | yii\db\ActiveRecord |
deleteAll() | Deletes rows in the table using the provided conditions. | yii\db\ActiveRecord |
detachBehavior() | Detaches a behavior from the component. | yii\base\Component |
detachBehaviors() | Detaches all behaviors from the component. | yii\base\Component |
encodePassword() | Encodes the current active record password field. | luya\admin\models\User |
ensureBehaviors() | Makes sure that the behaviors declared in behaviors() are attached to this component. | yii\base\Component |
equals() | Returns a value indicating whether the given active record is the same as the current one. | yii\db\ActiveRecord |
extraFields() | Returns the list of fields that can be expanded further and returned by toArray(). | luya\admin\models\User |
fieldStateDescriber() | Describes the fields shoudl be used to the perform the soft deleteion tasks. | luya\admin\traits\SoftDeleteTrait |
fields() | Return sensitive fields from api exposure. | luya\admin\models\User |
find() | Creates an yii\db\ActiveQueryInterface instance for query purpose. | luya\admin\ngrest\base\NgRestModel |
findActiveQueryBehaviors() | Attach behaviors to the Active Query. | luya\admin\ngrest\base\NgRestModel |
findAll() | Returns a list of active record models that match the specified primary key value(s) or a set of column values. | yii\db\BaseActiveRecord |
findByEmail() | Finds a current user for a given email. | luya\admin\models\User |
findBySql() | Creates an yii\db\ActiveQuery instance with a given SQL statement. | yii\db\ActiveRecord |
findIdentity() | Finds an identity by the given ID. | luya\admin\models\User |
findIdentityByAccessToken() | Finds an identity by the given token. | luya\admin\models\User |
findLatestPrimaryKeyValue() | Get an array with the latest primary key value. | luya\admin\ngrest\base\NgRestModel |
findOne() | Returns a single active record model instance by a primary key or an array of column values. | yii\db\BaseActiveRecord |
formName() | Returns the form name that this model class should use. | yii\base\Model |
generateAttributeLabel() | Generates a user friendly attribute label based on the give attribute name. | yii\base\Model |
generateNgRestRelations() | Generate an array with NgRestRelation objects | luya\admin\ngrest\base\NgRestModel |
generateResetEmail() | luya\admin\models\User | |
generateTokenEmail() | Render user token based email: | luya\admin\models\User |
genericSearch() | The Query which is going to be performend to the concret implementation. | luya\admin\ngrest\base\NgRestModel |
genericSearchFields() | The fields to lookup with the search query. | luya\admin\models\User |
genericSearchHiddenFields() | An array with fields which will be hidden in the search output, but are available for the State Provider functions. | luya\admin\ngrest\base\NgRestModel |
genericSearchStateProvider() | The state provider is used to click on the items. Retuns an array with a configuration for the angular state provider. Example | luya\admin\ngrest\base\NgRestModel |
getActiveValidators() | Returns the validators applicable to the current $scenario. | yii\base\Model |
getAndStoreEmailVerificationToken() | Generate and save a email verification token and return the token. | luya\admin\models\User |
getAndStoreToken() | Generate, store and return the secure Login token. | luya\admin\models\User |
getAttribute() | Returns the named attribute value. | yii\db\BaseActiveRecord |
getAttributeHint() | Returns the text hint for the specified attribute. | yii\db\BaseActiveRecord |
getAttributeLabel() | Returns the text label for the specified attribute. | yii\db\BaseActiveRecord |
getAttributes() | Returns attribute values. | yii\base\Model |
getAuthKey() | Returns a key that can be used to check the validity of a given identity ID. | luya\admin\models\User |
getBehavior() | Returns the named behavior object. | yii\base\Component |
getBehaviors() | Returns all behaviors attached to this component. | yii\base\Component |
getDb() | Returns the database connection used by this AR class. | yii\db\ActiveRecord |
getDevices() | Devices Active Query | luya\admin\models\User |
getDirtyAttributes() | Returns the attribute values that have been modified since they are loaded or saved most recently. | yii\db\BaseActiveRecord |
getErrorSummary() | Returns the errors for all attributes as a one-dimensional array. | yii\base\Model |
getErrors() | Returns the errors for all attributes or a single attribute. | yii\base\Model |
getFirstError() | Returns the first error of the specified attribute. | yii\base\Model |
getFirstErrors() | Returns the first error of every attribute in the model. | yii\base\Model |
getGroups() | Return the current related groups. | luya\admin\models\User |
getI18nOldValue() | Get the old/original i18n value from the database. | luya\admin\ngrest\base\NgRestModel |
getId() | Returns an ID that can uniquely identify a user identity. | luya\admin\models\User |
getIsNewRecord() | Returns a value indicating whether the current record is new. | yii\db\BaseActiveRecord |
getIsNgRestContext() | Whether the current model is in api context (REST SCENARIOS or CALL TYPE) context or not. | luya\admin\ngrest\base\NgRestModel |
getIterator() | Returns an iterator for traversing the attributes in the model. | yii\base\Model |
getLastloginTimestamp() | Get the last login Timestamp | luya\admin\models\User |
getNgRestCallType() | Determine the current call type based on get params as they can change the output behavior to make the ngrest crud list view. | luya\admin\ngrest\base\NgRestModel |
getNgRestConfig() | Build and call the full config object if not build yet for this model. | luya\admin\ngrest\base\NgRestModel |
getNgRestPrimaryKey() | Getter method for NgRest Primary Key. | luya\admin\ngrest\base\NgRestModel |
getNgRestRelationByIndex() | Get the NgRest Relation definition object. | luya\admin\ngrest\base\NgRestModel |
getNgRestScopeConfigOptions() | Return the scope definition third entry looking for button condition Currently support only buttonCondition | luya\admin\ngrest\base\NgRestModel |
getNgRestServices() | Triggers the event service event and returns the resolved data. | luya\admin\ngrest\base\NgRestModel |
getNgrestLogs() | Get all ngrest log entries for this user. | luya\admin\models\User |
getOldAttribute() | Returns the old value of the named attribute. | yii\db\BaseActiveRecord |
getOldAttributes() | Returns the old attribute values. | yii\db\BaseActiveRecord |
getOldPrimaryKey() | Returns the old primary key value(s). | yii\db\BaseActiveRecord |
getPrimaryKey() | Returns the primary key value(s). | yii\db\BaseActiveRecord |
getRelatedRecords() | Returns all populated related records. | yii\db\BaseActiveRecord |
getRelation() | Returns the relation object with the specified name. | yii\db\BaseActiveRecord |
getScenario() | Returns the scenario that this model is used in. | yii\base\Model |
getSetting() | Get user settings objects. | luya\admin\models\User |
getTableSchema() | Returns the schema information of the DB table associated with this AR class. | yii\db\ActiveRecord |
getTitleNamed() | Get the title Mr, Mrs. as string for the current user. | luya\admin\models\User |
getTitles() | Returns the available titles (mr, mrs index by numberic identifier | luya\admin\models\User |
getUserLogins() | Get the user logins for the given user. | luya\admin\models\User |
getValidators() | Returns all the validators declared in rules(). | yii\base\Model |
handleNgRestActiveButton() | Handle a given active button based on the hash (classname in sha1). | luya\admin\ngrest\base\NgRestModel |
hasAttribute() | Returns a value indicating whether the model has an attribute with the specified name. | yii\db\BaseActiveRecord |
hasErrors() | Returns a value indicating whether there is any validation error. | yii\base\Model |
hasEventHandlers() | Returns a value indicating whether there is any handler attached to the named event. | yii\base\Component |
hasMany() | See yii\db\BaseActiveRecord::hasMany() for more info. | yii\db\ActiveRecord |
hasMethod() | Returns a value indicating whether a method is defined. | yii\base\Component |
hasOne() | See yii\db\BaseActiveRecord::hasOne() for more info. | yii\db\ActiveRecord |
hasProperty() | Returns a value indicating whether a property is defined for this component. | yii\base\Component |
i18nAttributeFallbackValue() | Returns the value for an i18n field before it was casted to the output for the current active language if empty. | luya\admin\ngrest\base\NgRestModel |
i18nAttributeLanguageValue() | Returns the value of an i18n attribute for the given language. | luya\admin\ngrest\base\NgRestModel |
i18nAttributeValue() | Checks whether given attribute is in the list of i18n fields, if so the field value will be decoded and the value for the current active language is returned. | luya\admin\ngrest\base\NgRestModel |
i18nAttributesValue() | Returns the decoded i18n value for a set of attributes. | luya\admin\ngrest\base\NgRestModel |
init() | Initializes the object. | luya\admin\models\User |
insert() | Inserts a row into the associated database table using the attribute values of this record. | yii\db\ActiveRecord |
instance() | Returns static class instance, which can be used to obtain meta information. | yii\base\StaticInstanceTrait |
instantiate() | Creates an active record instance. | yii\db\BaseActiveRecord |
internalAndWhere() | This method will be used to performe the where querys of ngrestFind() and find() of the ActiveRecord. |
luya\admin\traits\SoftDeleteTrait |
isAttributeActive() | Returns a value indicating whether the attribute is active in the current scenario. | yii\base\Model |
isAttributeChanged() | Returns a value indicating whether the named attribute has been changed. | yii\db\BaseActiveRecord |
isAttributeRequired() | Returns a value indicating whether the attribute is required. | yii\base\Model |
isAttributeSafe() | Returns a value indicating whether the attribute is safe for massive assignments. | yii\base\Model |
isI18n() | Whether a field is i18n or not. | luya\admin\ngrest\base\NgRestModel |
isPrimaryKey() | Returns a value indicating whether the given set of attributes represents the primary key for this model. | yii\db\BaseActiveRecord |
isRelationPopulated() | Check whether the named relation has been populated with records. | yii\db\BaseActiveRecord |
isTransactional() | Returns a value indicating whether the specified operation is transactional in the current $scenario. | yii\db\ActiveRecord |
link() | Establishes the relationship between two models. | yii\db\BaseActiveRecord |
load() | Populates the model with input data. | yii\base\Model |
loadDefaultValues() | Loads default values from database table schema. | yii\db\ActiveRecord |
loadMultiple() | Populates a set of models with the data from end user. | yii\base\Model |
markAttributeDirty() | Marks an attribute dirty. | yii\db\BaseActiveRecord |
ngRestActiveButtons() | Define Active Buttons. | luya\admin\ngrest\base\NgRestModel |
ngRestActiveSelections() | Define Active Selections. | luya\admin\ngrest\base\NgRestModel |
ngRestActiveWindows() | Define Active Window configurations. | luya\admin\models\User |
ngRestApiEndpoint() | Defines the Api Endpoint for the current Active Record model. | luya\admin\models\User |
ngRestAttributeGroups() | Grouping fields into fieldset similar group names which can be collapsed by default or not: | luya\admin\ngrest\base\NgRestModel |
ngRestAttributeTypes() | Define the field types for ngrest, to use ngRestConfigDefine() . |
luya\admin\models\User |
ngRestByPrimaryKeyOne() | The a single object from a primary key definition. | luya\admin\ngrest\base\NgRestModel |
ngRestConfig() | Defines the base inline configuration for the current Model. | luya\admin\ngrest\base\NgRestModel |
ngRestConfigDefine() | Inject data from the model into the config, usage exmple in ngRestConfig method context: | luya\admin\ngrest\base\NgRestModel |
ngRestConfigOptions() | The NgRest config has an options property which can contain a variaty of definitions. | luya\admin\ngrest\base\NgRestModel |
ngRestExport() | Format the values for export generator. | luya\admin\models\User |
ngRestExtraAttributeTypes() | Same as ngRestAttributeTypes() but used for extraField instead of field. | luya\admin\models\User |
ngRestFilters() | Define an array with filters you can select from the CRUD list. | luya\admin\models\User |
ngRestFind() | The NgRestFind is used when performing the crud list index overivew. You can override this method in order to hide data from the ngRestFind command which populates all data from the database. | luya\admin\models\User |
ngRestFullQuerySearch() | Search trough the whole table as ajax fallback when pagination is enabled. | luya\admin\ngrest\base\NgRestModel |
ngRestGroupByExpanded() | When enabled, the field groups in the form are by default expanded (open) or not (closed). | luya\admin\ngrest\base\NgRestModel |
ngRestGroupByField() | Enable the Grouping by a field option by default. Allows you to predefine the default group field. | luya\admin\ngrest\base\NgRestModel |
ngRestListOrder() | Define the default ordering for the ngrest list when loading, by default the primary key sorted ascending is used. To override the method for example sorting by a timestamp field: | luya\admin\models\User |
ngRestPools() | Define data pools. | luya\admin\ngrest\base\NgRestModel |
ngRestRelations() | Define your relations in order to access the relation data and manage them directly in the same view. | luya\admin\ngrest\base\NgRestModel |
ngRestScopes() | Defines the scope which field should be used for what situation. | luya\admin\models\User |
off() | Detaches an existing event handler from this component. | yii\base\Component |
offsetExists() | Returns whether there is an element at the specified offset. | yii\db\BaseActiveRecord |
offsetGet() | Returns the element at the specified offset. | yii\base\Model |
offsetSet() | Sets the element at the specified offset. | yii\base\Model |
offsetUnset() | Sets the element value at the specified offset to null. | yii\db\BaseActiveRecord |
on() | Attaches an event handler to an event. | yii\base\Component |
onUnsafeAttribute() | This method is invoked when an unsafe attribute is being massively assigned. | yii\base\Model |
optimisticLock() | Returns the name of the column that stores the lock version for implementing optimistic locking. | yii\db\BaseActiveRecord |
populateRecord() | Populates an active record object using a row of data from the database/storage. | yii\db\ActiveRecord |
populateRelation() | Populates the named relation with the related records. | yii\db\BaseActiveRecord |
primaryKey() | Returns the primary key name(s) for this AR class. | yii\db\ActiveRecord |
refresh() | Repopulates this active record with the latest data. | yii\db\ActiveRecord |
resetEmailVerification() | Reset the user model email verification token and timestamp | luya\admin\models\User |
rules() | Returns the validation rules for attributes. | luya\admin\models\User |
safeAttributes() | Returns the attribute names that are safe to be massively assigned in the current scenario. | yii\base\Model |
save() | Saves the current record. | yii\db\BaseActiveRecord |
scenarios() | Returns a list of scenarios and the corresponding active attributes. | luya\admin\models\User |
setAttribute() | Sets the named attribute value. | yii\db\BaseActiveRecord |
setAttributes() | Sets the attribute values in a massive way. | yii\base\Model |
setI18nOldValue() | Set the old json value from a i18n database value. | luya\admin\ngrest\base\NgRestModel |
setIsNewRecord() | Sets the value indicating whether the record is new. | yii\db\BaseActiveRecord |
setNgRestPrimaryKey() | Setter method for NgRest Primary Key | luya\admin\ngrest\base\NgRestModel |
setOldAttribute() | Sets the old value of the named attribute. | yii\db\BaseActiveRecord |
setOldAttributes() | Sets the old attribute values. | yii\db\BaseActiveRecord |
setScenario() | Sets the scenario for the model. | yii\base\Model |
tableName() | Declares the name of the database table associated with this AR class. | luya\admin\models\User |
toArray() | Converts the model into an array. | yii\base\ArrayableTrait |
transactions() | Declares which DB operations should be performed within a transaction in different scenarios. | yii\db\ActiveRecord |
trigger() | Triggers an event. | yii\base\Component |
unlink() | Destroys the relationship between two models. | yii\db\BaseActiveRecord |
unlinkAll() | Destroys the relationship in current model. | yii\db\BaseActiveRecord |
update() | Saves the changes to this active record into the associated database table. | yii\db\ActiveRecord |
updateAll() | Updates the whole table using the provided attribute values and conditions. | yii\db\ActiveRecord |
updateAllCounters() | Updates the whole table using the provided counter changes and conditions. | yii\db\ActiveRecord |
updateAttributes() | Updates the specified attributes. | yii\db\BaseActiveRecord |
updateCounters() | Updates one or several counter columns for the current AR object. | yii\db\BaseActiveRecord |
updateSettings() | Setter method for user settings which encodes the json. | luya\admin\models\User |
validate() | Performs the data validation. | yii\base\Model |
validateAuthKey() | Validates the given auth key. | luya\admin\models\User |
validateMultiple() | Validates multiple models. | yii\base\Model |
validatePassword() | Validates the password for the current given user. | luya\admin\models\User |
Protected Methods
Method | Description | Defined By |
---|---|---|
createRelationQuery() | Creates a query instance for has-one or has-many relation. |
yii\db\BaseActiveRecord |
deleteInternal() | Deletes an ActiveRecord without considering transaction. | yii\db\ActiveRecord |
extractFieldsFor() | Extract nested fields from a fields collection for a given root field Nested fields are separated with dots (.). e.g: "item.id" The previous example would extract "id". | yii\base\ArrayableTrait |
extractRootFields() | Extracts the root field names from nested fields. | yii\base\ArrayableTrait |
insertInternal() | Inserts an ActiveRecord into DB without considering transaction. | yii\db\ActiveRecord |
refreshInternal() | Repopulates this active record with the latest data from a newly fetched instance. | yii\db\BaseActiveRecord |
resolveFields() | Determines which fields can be returned by toArray(). | yii\base\ArrayableTrait |
runI18nContextOnFindPlugin() | Run an attribute plugin in i18n context in order to ensure plugin functions. | luya\admin\ngrest\base\NgRestModel |
updateInternal() | yii\db\BaseActiveRecord |
Events
Event | Type | Description | Defined By |
---|---|---|---|
EVENT_AFTER_DELETE | yii\db\Event | An event that is triggered after a record is deleted. | yii\db\BaseActiveRecord |
EVENT_AFTER_FIND | yii\db\Event | An event that is triggered after the record is created and populated with query result. | yii\db\BaseActiveRecord |
EVENT_AFTER_INSERT | yii\db\AfterSaveEvent | An event that is triggered after a record is inserted. | yii\db\BaseActiveRecord |
EVENT_AFTER_REFRESH | yii\db\Event | An event that is triggered after a record is refreshed. (available since version 2.0.8) | yii\db\BaseActiveRecord |
EVENT_AFTER_UPDATE | yii\db\AfterSaveEvent | An event that is triggered after a record is updated. | yii\db\BaseActiveRecord |
EVENT_AFTER_VALIDATE | yii\base\Event | An event raised at the end of validate() | yii\base\Model |
EVENT_BEFORE_DELETE | yii\base\ModelEvent | An event that is triggered before deleting a record. | yii\db\BaseActiveRecord |
EVENT_BEFORE_INSERT | yii\base\ModelEvent | An event that is triggered before inserting a record. | yii\db\BaseActiveRecord |
EVENT_BEFORE_UPDATE | yii\base\ModelEvent | An event that is triggered before updating a record. | yii\db\BaseActiveRecord |
EVENT_BEFORE_VALIDATE | yii\base\ModelEvent | An event raised at the beginning of validate(). | yii\base\Model |
EVENT_INIT | yii\db\Event | An event that is triggered when the record is initialized via init(). | yii\db\BaseActiveRecord |
Constants
Constant | Value | Description | Defined By |
---|---|---|---|
EVENT_AFTER_NGREST_FIND | 'afterNgrestFind' | luya\admin\ngrest\base\NgRestModel | |
EVENT_AFTER_NGREST_UPDATE_FIND | 'afterNgrestUpdateFind' | luya\admin\ngrest\base\NgRestModel | |
EVENT_SERVICE_NGREST | 'serviceNgrest' | luya\admin\ngrest\base\NgRestModel | |
OP_ALL | 0x7 | All three operations: insert, update, delete. This is a shortcut of the expression: OP_INSERT | OP_UPDATE | OP_DELETE. | yii\db\ActiveRecord |
OP_DELETE | 0x4 | The delete operation. This is mainly used when overriding transactions() to specify which operations are transactional. | yii\db\ActiveRecord |
OP_INSERT | 0x1 | The insert operation. This is mainly used when overriding transactions() to specify which operations are transactional. | yii\db\ActiveRecord |
OP_UPDATE | 0x2 | The update operation. This is mainly used when overriding transactions() to specify which operations are transactional. | yii\db\ActiveRecord |
SCENARIO_DEFAULT | 'default' | The name of the default scenario. | yii\base\Model |
SCENARIO_RESTCREATE | \luya\admin\base\RestActiveController::SCENARIO_RESTCREATE | luya\admin\ngrest\base\NgRestModel | |
SCENARIO_RESTUPDATE | \luya\admin\base\RestActiveController::SCENARIO_RESTUPDATE | luya\admin\ngrest\base\NgRestModel | |
USER_SETTING_ISDEVELOPER | 'isDeveloper' | luya\admin\models\User | |
USER_SETTING_NEWUSEREMAIL | 'newUserEmail' | luya\admin\models\User | |
USER_SETTING_UILANGUAGE | 'luyadminlanguage' | luya\admin\models\User |
Property Details
A key that is used to check the validity of a given identity ID.
{@since 3.0.0}
{@since 3.0.0}
{@since 3.0.0}
Setting object to store data.
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\Model::__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()
{
parent::__clone();
$this->_errors = null;
$this->_validators = null;
}
Defined in: luya\admin\ngrest\base\NgRestModel::__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 = [])
{
$this->attachBehaviors([
'NgRestEventBehavior' => [
'class' => NgRestEventBehavior::class,
'plugins' => $this->getNgRestConfig()->getPlugins(),
],
'LogBehavior' => [
'class' => LogBehavior::class,
'api' => static::ngRestApiEndpoint(),
],
]);
parent::__construct($config);
}
Defined in: yii\db\BaseActiveRecord::__get()
PHP getter magic method.
This method is overridden so that attributes and related objects can be accessed like properties.
See also getAttribute().
public mixed __get ( $name ) | ||
$name | string |
Property name |
return | mixed |
Property value |
---|---|---|
throws | yii\base\InvalidArgumentException |
if relation name is wrong |
public function __get($name)
{
if (isset($this->_attributes[$name]) || array_key_exists($name, $this->_attributes)) {
return $this->_attributes[$name];
}
if ($this->hasAttribute($name)) {
return null;
}
if (isset($this->_related[$name]) || array_key_exists($name, $this->_related)) {
return $this->_related[$name];
}
$value = parent::__get($name);
if ($value instanceof ActiveQueryInterface) {
$this->setRelationDependencies($name, $value);
return $this->_related[$name] = $value->findFor($name, $this);
}
return $value;
}
Defined in: yii\db\BaseActiveRecord::__isset()
Checks if a property value is null.
This method overrides the parent implementation by checking if the named attribute is null
or not.
public boolean __isset ( $name ) | ||
$name | string |
The property name or the event name |
return | boolean |
Whether the property value is null |
---|
public function __isset($name)
{
try {
return $this->__get($name) !== null;
} catch (\Exception $t) {
return false;
} catch (\Throwable $e) {
return false;
}
}
Defined in: yii\db\BaseActiveRecord::__set()
PHP setter magic method.
This method is overridden so that AR attributes can be accessed like properties.
public void __set ( $name, $value ) | ||
$name | string |
Property name |
$value | mixed |
Property value |
public function __set($name, $value)
{
if ($this->hasAttribute($name)) {
if (
!empty($this->_relationsDependencies[$name])
&& (!array_key_exists($name, $this->_attributes) || $this->_attributes[$name] !== $value)
) {
$this->resetDependentRelations($name);
}
$this->_attributes[$name] = $value;
} else {
parent::__set($name, $value);
}
}
Defined in: yii\db\BaseActiveRecord::__unset()
Sets a component property to be null.
This method overrides the parent implementation by clearing the specified attribute value.
public void __unset ( $name ) | ||
$name | string |
The property name or the event name |
public function __unset($name)
{
if ($this->hasAttribute($name)) {
unset($this->_attributes[$name]);
if (!empty($this->_relationsDependencies[$name])) {
$this->resetDependentRelations($name);
}
} elseif (array_key_exists($name, $this->_related)) {
unset($this->_related[$name]);
} elseif ($this->getRelation($name, false) === null) {
parent::__unset($name);
}
}
Defined in: yii\base\Model::activeAttributes()
Returns the attribute names that are subject to validation in the current scenario.
public string[] activeAttributes ( ) | ||
return | string[] |
Safe attribute names |
---|
public function activeAttributes()
{
$scenario = $this->getScenario();
$scenarios = $this->scenarios();
if (!isset($scenarios[$scenario])) {
return [];
}
$attributes = array_keys(array_flip($scenarios[$scenario]));
foreach ($attributes as $i => $attribute) {
if (strncmp($attribute, '!', 1) === 0) {
$attributes[$i] = substr($attribute, 1);
}
}
return $attributes;
}
Defined in: yii\base\Model::addError()
Adds a new error to the specified attribute.
public void addError ( $attribute, $error = '' ) | ||
$attribute | string |
Attribute name |
$error | string |
New error message |
public function addError($attribute, $error = '')
{
$this->_errors[$attribute][] = $error;
}
Defined in: yii\base\Model::addErrors()
Adds a list of errors.
public void addErrors ( array $items ) | ||
$items | array |
A list of errors. The array keys must be attribute names. The array values should be error messages. If an attribute has multiple errors, these errors must be given in terms of an array. You may use the result of getErrors() as the value for this parameter. |
public function addErrors(array $items)
{
foreach ($items as $attribute => $errors) {
if (is_array($errors)) {
foreach ($errors as $error) {
$this->addError($attribute, $error);
}
} else {
$this->addError($attribute, $errors);
}
}
}
public void addNgRestServiceData ( $field, $data ) | ||
$field | string | |
$data | mixed |
public function addNgRestServiceData($field, $data)
{
$this->ngRestServiceArray[$field] = $data;
}
Defined in: yii\db\BaseActiveRecord::afterDelete()
This method is invoked after deleting a record.
The default implementation raises the EVENT_AFTER_DELETE event. You may override this method to do postprocessing after the record is deleted. Make sure you call the parent implementation so that the event is raised properly.
public void afterDelete ( ) |
public function afterDelete()
{
$this->trigger(self::EVENT_AFTER_DELETE);
}
Defined in: luya\admin\ngrest\base\NgRestModel::afterFind()
This method is called when the AR object is created and populated with the query result.
The default implementation will trigger an EVENT_AFTER_FIND event. When overriding this method, make sure you call the parent implementation to ensure the event is triggered.
public void afterFind ( ) |
public function afterFind()
{
if ($this->getNgRestCallType()) {
if ($this->getNgRestCallType() == 'list') {
$this->trigger(self::EVENT_AFTER_NGREST_FIND);
}
if ($this->getNgRestCallType() == 'update') {
$this->trigger(self::EVENT_AFTER_NGREST_UPDATE_FIND);
}
} else {
return parent::afterFind();
}
}
Defined in: yii\db\BaseActiveRecord::afterRefresh()
This method is called when the AR object is refreshed.
The default implementation will trigger an EVENT_AFTER_REFRESH event. When overriding this method, make sure you call the parent implementation to ensure the event is triggered.
public void afterRefresh ( ) |
public function afterRefresh()
{
$this->trigger(self::EVENT_AFTER_REFRESH);
}
Defined in: yii\db\BaseActiveRecord::afterSave()
This method is called at the end of inserting or updating a record.
The default implementation will trigger an EVENT_AFTER_INSERT event when $insert
is true
,
or an EVENT_AFTER_UPDATE event if $insert
is false
. The event class used is yii\db\AfterSaveEvent.
When overriding this method, make sure you call the parent implementation so that
the event is triggered.
public void afterSave ( $insert, $changedAttributes ) | ||
$insert | boolean |
Whether this method called while inserting a record.
If |
$changedAttributes | array |
The old values of attributes that had changed and were saved.
You can use this parameter to take action based on the changes made for example send an email
when the password had changed or implement audit trail that tracks all the changes.
Note that no automatic type conversion performed by default. You may use yii\behaviors\AttributeTypecastBehavior to facilitate attribute typecasting. See https://www.yiiframework.com/doc-2.0/guide-db-active-record.html#attributes-typecasting. |
public function afterSave($insert, $changedAttributes)
{
$this->trigger($insert ? self::EVENT_AFTER_INSERT : self::EVENT_AFTER_UPDATE, new AfterSaveEvent([
'changedAttributes' => $changedAttributes,
]));
}
Defined in: yii\base\Model::afterValidate()
This method is invoked after validation ends.
The default implementation raises an afterValidate
event.
You may override this method to do postprocessing after validation.
Make sure the parent implementation is invoked so that the event can be raised.
public void afterValidate ( ) |
public function afterValidate()
{
$this->trigger(self::EVENT_AFTER_VALIDATE);
}
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\Model::attributeHints()
Returns the attribute hints.
Attribute hints are mainly used for display purpose. For example, given an attribute
isPublic
, we can declare a hint Whether the post should be visible for not logged in users
,
which provides user-friendly description of the attribute meaning and can be displayed to end users.
Unlike label hint will not be generated, if its explicit declaration is omitted.
Note, in order to inherit hints defined in the parent class, a child class needs to
merge the parent hints with child hints using functions such as array_merge()
.
public array attributeHints ( ) | ||
return | array |
Attribute hints (name => hint) |
---|
public function attributeHints()
{
return [];
}
Returns the attribute labels.
Attribute labels are mainly used for display purpose. For example, given an attribute
firstName
, we can declare a label First Name
which is more user-friendly and can
be displayed to end users.
By default an attribute label is generated using generateAttributeLabel(). This method allows you to explicitly specify attribute labels.
Note, in order to inherit labels defined in the parent class, a child class needs to
merge the parent labels with child labels using functions such as array_merge()
.
public array attributeLabels ( ) | ||
return | array |
Attribute labels (name => label) |
---|
public function attributeLabels()
{
return [
'title' => Module::t('mode_user_title'),
'firstname' => Module::t('mode_user_firstname'),
'lastname' => Module::t('mode_user_lastname'),
'email' => Module::t('mode_user_email'),
'password' => Module::t('mode_user_password'),
'lastloginTimestamp' => Module::t('model_user_lastlogintimestamp'),
'api_last_activity' => Module::t('model_user_api_last_activity'),
'login_attempt_lock_expiration' => Module::t('model_user_login_attempt_lock_expiration'),
'email_verification_token' => Module::t('model_user_email_verification_token'),
];
}
Defined in: yii\db\ActiveRecord::attributes()
Returns the list of all attribute names of the model.
The default implementation will return all column names of the table associated with this AR class.
public array attributes ( ) | ||
return | array |
List of attribute names. |
---|
public function attributes()
{
return static::getTableSchema()->getColumnNames();
}
Defined in: yii\db\BaseActiveRecord::beforeDelete()
This method is invoked before deleting a record.
The default implementation raises the EVENT_BEFORE_DELETE event. When overriding this method, make sure you call the parent implementation like the following:
public function beforeDelete()
{
if (!parent::beforeDelete()) {
return false;
}
// ...custom code here...
return true;
}
public boolean beforeDelete ( ) | ||
return | boolean |
Whether the record should be deleted. Defaults to |
---|
public function beforeDelete()
{
$event = new ModelEvent();
$this->trigger(self::EVENT_BEFORE_DELETE, $event);
return $event->isValid;
}
Defined in: yii\db\BaseActiveRecord::beforeSave()
This method is called at the beginning of inserting or updating a record.
The default implementation will trigger an EVENT_BEFORE_INSERT event when $insert
is true
,
or an EVENT_BEFORE_UPDATE event if $insert
is false
.
When overriding this method, make sure you call the parent implementation like the following:
public function beforeSave($insert)
{
if (!parent::beforeSave($insert)) {
return false;
}
// ...custom code here...
return true;
}
public boolean beforeSave ( $insert ) | ||
$insert | boolean |
Whether this method called while inserting a record.
If |
return | boolean |
Whether the insertion or updating should continue.
If |
---|
public function beforeSave($insert)
{
$event = new ModelEvent();
$this->trigger($insert ? self::EVENT_BEFORE_INSERT : self::EVENT_BEFORE_UPDATE, $event);
return $event->isValid;
}
Defined in: yii\base\Model::beforeValidate()
This method is invoked before validation starts.
The default implementation raises a beforeValidate
event.
You may override this method to do preliminary checks before validation.
Make sure the parent implementation is invoked so that the event can be raised.
public boolean beforeValidate ( ) | ||
return | boolean |
Whether the validation should be executed. Defaults to true. If false is returned, the validation will stop and the model is considered invalid. |
---|
public function beforeValidate()
{
$event = new ModelEvent();
$this->trigger(self::EVENT_BEFORE_VALIDATE, $event);
return $event->isValid;
}
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\db\BaseActiveRecord::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).
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 (parent::canGetProperty($name, $checkVars, $checkBehaviors)) {
return true;
}
try {
return $this->hasAttribute($name);
} catch (\Exception $e) {
// `hasAttribute()` may fail on base/abstract classes in case automatic attribute list fetching used
return false;
}
}
Defined in: yii\db\BaseActiveRecord::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).
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 (parent::canSetProperty($name, $checkVars, $checkBehaviors)) {
return true;
}
try {
return $this->hasAttribute($name);
} catch (\Exception $e) {
// `hasAttribute()` may fail on base/abstract classes in case automatic attribute list fetching used
return false;
}
}
The method which is going to change the password on the current model.
The implementation of this must make sure if the $newPassword and $newPasswordRepetition are equals!
public boolean changePassword ( $newpass ) | ||
$newpass | ||
return | boolean |
Whether password change was successful or not. |
---|
public function changePassword($newpass)
{
$this->password = $newpass;
if ($this->encodePassword()) {
if ($this->save(true, ['password', 'password_salt'])) {
return true;
}
}
$this->addError('newpass', Module::t('user_change_password_error'));
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: yii\base\Model::clearErrors()
Removes errors for all attributes or a single attribute.
public void clearErrors ( $attribute = null ) | ||
$attribute | string|null |
Attribute name. Use null to remove errors for all attributes. |
public function clearErrors($attribute = null)
{
if ($attribute === null) {
$this->_errors = [];
} else {
unset($this->_errors[$attribute]);
}
}
Defined in: yii\db\BaseActiveRecord::createRelationQuery()
Creates a query instance for has-one
or has-many
relation.
See also:
protected yii\db\ActiveQueryInterface createRelationQuery ( $class, $link, $multiple ) | ||
$class | string |
The class name of the related record. |
$link | array |
The primary-foreign key constraint. |
$multiple | boolean |
Whether this query represents a relation to more than one record. |
return | yii\db\ActiveQueryInterface |
The relational query object. |
---|
protected function createRelationQuery($class, $link, $multiple)
{
/* @var $class ActiveRecordInterface */
/* @var $query ActiveQuery */
$query = $class::find();
$query->primaryModel = $this;
$query->link = $link;
$query->multiple = $multiple;
return $query;
}
Defined in: yii\base\Model::createValidators()
Creates validator objects based on the validation rules specified in rules().
Unlike getValidators(), each time this method is called, a new list of validators will be returned.
public ArrayObject createValidators ( ) | ||
return | ArrayObject |
Validators |
---|---|---|
throws | yii\base\InvalidConfigException |
if any validation rule configuration is invalid |
public function createValidators()
{
$validators = new ArrayObject();
foreach ($this->rules() as $rule) {
if ($rule instanceof Validator) {
$validators->append($rule);
} elseif (is_array($rule) && isset($rule[0], $rule[1])) { // attributes, validator type
$validator = Validator::createValidator($rule[1], $this, (array) $rule[0], array_slice($rule, 2));
$validators->append($validator);
} else {
throw new InvalidConfigException('Invalid validation rule: a rule must specify both attribute names and validator type.');
}
}
return $validators;
}
Defined in: yii\db\ActiveRecord::delete()
Deletes the table row corresponding to this active record.
This method performs the following steps in order:
- call beforeDelete(). If the method returns
false
, it will skip the rest of the steps; - delete the record from the database;
- call afterDelete().
In the above step 1 and 3, events named EVENT_BEFORE_DELETE and EVENT_AFTER_DELETE will be raised by the corresponding methods.
public integer|false delete ( ) | ||
return | integer|false |
The number of rows deleted, or |
---|---|---|
throws | yii\db\StaleObjectException |
if optimistic locking is enabled and the data being deleted is outdated. |
throws | Throwable |
in case delete failed. |
public function delete()
{
if (!$this->isTransactional(self::OP_DELETE)) {
return $this->deleteInternal();
}
$transaction = static::getDb()->beginTransaction();
try {
$result = $this->deleteInternal();
if ($result === false) {
$transaction->rollBack();
} else {
$transaction->commit();
}
return $result;
} catch (\Exception $e) {
$transaction->rollBack();
throw $e;
} catch (\Throwable $e) {
$transaction->rollBack();
throw $e;
}
}
Defined in: yii\db\ActiveRecord::deleteAll()
Deletes rows in the table using the provided conditions.
For example, to delete all customers whose status is 3:
Customer::deleteAll('status = 3');
Warning: If you do not specify any condition, this method will delete all rows in the table.
Note that this method will not trigger any events. If you need EVENT_BEFORE_DELETE or EVENT_AFTER_DELETE to be triggered, you need to find the models first and then call delete() on each of them. For example an equivalent of the example above would be:
$models = Customer::find()->where('status = 3')->all();
foreach ($models as $model) {
$model->delete();
}
For a large set of models you might consider using yii\db\ActiveQuery::each() to keep memory usage within limits.
public static integer deleteAll ( $condition = null, $params = [] ) | ||
$condition | string|array|null |
The conditions that will be put in the WHERE part of the DELETE SQL. Please refer to yii\db\Query::where() on how to specify this parameter. |
$params | array |
The parameters (name => value) to be bound to the query. |
return | integer |
The number of rows deleted |
---|
public static function deleteAll($condition = null, $params = [])
{
$command = static::getDb()->createCommand();
$command->delete(static::tableName(), $condition, $params);
return $command->execute();
}
Defined in: yii\db\ActiveRecord::deleteInternal()
Deletes an ActiveRecord without considering transaction.
protected integer|false deleteInternal ( ) | ||
return | integer|false |
The number of rows deleted, or |
---|---|---|
throws | yii\db\StaleObjectException |
protected function deleteInternal()
{
if (!$this->beforeDelete()) {
return false;
}
// we do not check the return value of deleteAll() because it's possible
// the record is already deleted in the database and thus the method will return 0
$condition = $this->getOldPrimaryKey(true);
$lock = $this->optimisticLock();
if ($lock !== null) {
$condition[$lock] = $this->$lock;
}
$result = static::deleteAll($condition);
if ($lock !== null && !$result) {
throw new StaleObjectException('The object being deleted is outdated.');
}
$this->setOldAttributes(null);
$this->afterDelete();
return $result;
}
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);
}
}
Encodes the current active record password field.
public boolean encodePassword ( ) |
public function encodePassword()
{
if (!$this->validate(['password'])) {
return false;
}
// create random string for password salting
$this->password_salt = Yii::$app->getSecurity()->generateRandomString();
// store the password
$this->password = Yii::$app->getSecurity()->generatePasswordHash($this->password.$this->password_salt);
return true;
}
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: yii\db\ActiveRecord::equals()
Returns a value indicating whether the given active record is the same as the current one.
The comparison is made by comparing the table names and the primary key values of the two active records. If one of the records is new they are also considered not equal.
public boolean equals ( $record ) | ||
$record | yii\db\ActiveRecord |
Record to compare to |
return | boolean |
Whether the two active records refer to the same row in the same database table. |
---|
public function equals($record)
{
if ($this->isNewRecord || $record->isNewRecord) {
return false;
}
return static::tableName() === $record->tableName() && $this->getPrimaryKey() === $record->getPrimaryKey();
}
Returns the list of fields that can be expanded further and returned by toArray().
This method is similar to fields() except that the list of fields returned by this method are not returned by default by toArray(). Only when field names to be expanded are explicitly specified when calling toArray(), will their values be exported.
The default implementation returns an empty array.
You may override this method to return a list of expandable fields based on some context information (e.g. the current application user).
public array extraFields ( ) | ||
return | array |
The list of expandable field names or field definitions. Please refer to fields() on the format of the return value. |
---|
public function extraFields()
{
return array_unique(array_merge(['groups', 'lastloginTimestamp'], parent::extraFields()));
}
Defined in: yii\base\ArrayableTrait::extractFieldsFor()
Extract nested fields from a fields collection for a given root field Nested fields are separated with dots (.). e.g: "item.id" The previous example would extract "id".
protected array extractFieldsFor ( array $fields, $rootField ) | ||
$fields | array |
The fields requested for extraction |
$rootField | string |
The root field for which we want to extract the nested fields |
return | array |
Nested fields extracted for the given field |
---|
protected function extractFieldsFor(array $fields, $rootField)
{
$result = [];
foreach ($fields as $field) {
if (0 === strpos($field, "{$rootField}.")) {
$result[] = preg_replace('/^' . preg_quote($rootField, '/') . '\./i', '', $field);
}
}
return array_unique($result);
}
Defined in: yii\base\ArrayableTrait::extractRootFields()
Extracts the root field names from nested fields.
Nested fields are separated with dots (.). e.g: "item.id" The previous example would extract "item".
protected array extractRootFields ( array $fields ) | ||
$fields | array |
The fields requested for extraction |
return | array |
Root fields extracted from the given nested fields |
---|
protected function extractRootFields(array $fields)
{
$result = [];
foreach ($fields as $field) {
$result[] = current(explode('.', $field, 2));
}
if (in_array('*', $result, true)) {
$result = [];
}
return array_unique($result);
}
Defined in: luya\admin\traits\SoftDeleteTrait::fieldStateDescriber()
Describes the fields shoudl be used to the perform the soft deleteion tasks.
Examples value of the method:
return [
'is_deleted' => [true, false], // on delete sets `is_deleted = true`; on find add where `where(['is_deleted' => false]);`.
'is_inactive' => true, // on delete sets `is_inactive = true`; on find add where `where([is_inactive' => !true]);`.
];
public static array fieldStateDescriber ( ) | ||
return | array |
Returns an array with a key which desribes what field should be updated on delete and observed on find, the value for the corresponding field can be an array or a string/numeric
if you want to override the default implemenation to match your custom models you should always use the former type of state description. |
---|
public static function fieldStateDescriber()
{
return [
'is_deleted' => [true, false]
];
}
Return sensitive fields from api exposure.
{@inheritDoc}
See also yii\db\BaseActiveRecord::fields().
public void fields ( ) |
public function fields()
{
$fields = parent::fields();
unset($fields['password'], $fields['password_salt'], $fields['auth_token'], $fields['is_deleted'], $fields['email_verification_token'], $fields['cookie_token'], $fields['secure_token'], $fields['settings']);
return $fields;
}
Defined in: luya\admin\ngrest\base\NgRestModel::find()
Creates an yii\db\ActiveQueryInterface instance for query purpose.
The returned yii\db\ActiveQueryInterface instance can be further customized by calling
methods defined in yii\db\ActiveQueryInterface before one()
or all()
is called to return
populated ActiveRecord instances. For example,
// find the customer whose ID is 1
$customer = Customer::find()->where(['id' => 1])->one();
// find all active customers and order them by their age:
$customers = Customer::find()
->where(['status' => 1])
->orderBy('age')
->all();
This method is also called by yii\db\BaseActiveRecord::hasOne() and yii\db\BaseActiveRecord::hasMany() to create a relational query.
You may override this method to return a customized query. For example,
class Customer extends ActiveRecord
{
public static function find()
{
// use CustomerQuery instead of the default ActiveQuery
return new CustomerQuery(get_called_class());
}
}
The following code shows how to apply a default condition for all queries:
class Customer extends ActiveRecord
{
public static function find()
{
return parent::find()->where(['deleted' => false]);
}
}
// Use andWhere()/orWhere() to apply the default condition
// SELECT FROM customer WHERE `deleted`=:deleted AND age>30
$customers = Customer::find()->andWhere('age>30')->all();
// Use where() to ignore the default condition
// SELECT FROM customer WHERE age>30
$customers = Customer::find()->where('age>30')->all();
public static luya\admin\ngrest\base\NgRestActiveQuery find ( ) | ||
return | luya\admin\ngrest\base\NgRestActiveQuery |
The newly created yii\db\ActiveQuery instance. |
---|
public static function find()
{
$config = [];
foreach (static::findActiveQueryBehaviors() as $name => $class) {
$config['as ' . $name] = $class;
}
return new NgRestActiveQuery(static::class, $config);
}
Defined in: luya\admin\ngrest\base\NgRestModel::findActiveQueryBehaviors()
Attach behaviors to the Active Query.
Attach behaviours to every new {{\luya\admin\ngrest\base\NgRestActiveQuery}} on find() but not ngRestFind(). Returns a list of behaviors that the query component should behave as.
As behavior methods can be access from the inner class, use full functions can be used inside the active query. It also enables the option to share standardized behaviors with functions (conditions), for example a soft delete condition.
A behavior example:
class MySuperBehavioir extends yii\base\Behavior
{
public function active($isActive = true)
{
return $this->andWhere(['is_active' => $isActive]);
}
}
After attaching this behavior, it can be used like MyModel::find()->active()->one()
.
Whenever possible, directly create a custom Active Query, as it provides full IDE support. The behavior does not, the example above will even show an IDE error because the mmethod
andWhere()
does not exsist in the yii\base\Behavior class.
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:
public static function findActiveQueryBehaviors()
{
return [
'behaviorName' => [
'class' => 'BehaviorClass',
'property1' => 'value1',
'property2' => 'value2',
]
]
}
public static array findActiveQueryBehaviors ( ) |
public static function findActiveQueryBehaviors()
{
return [];
}
Defined in: yii\db\BaseActiveRecord::findAll()
Returns a list of active record models that match the specified primary key value(s) or a set of column values.
The method accepts:
- a scalar value (integer or string): query by a single primary key value and return an array containing the corresponding record (or an empty array if not found).
- a non-associative array: query by a list of primary key values and return the
corresponding records (or an empty array if none was found).
Note that an empty condition will result in an empty result as it will be interpreted as a search for
primary keys and not an empty
WHERE
condition. - an associative array of name-value pairs: query by a set of attribute values and return an array of records
matching all of them (or an empty array if none was found). Note that
['id' => 1, 2]
is treated as a non-associative array. Column names are limited to current records table columns for SQL DBMS, or filtered otherwise to be limted to simple filter conditions. - a yii\db\Expression: The expression will be used directly. (@since 2.0.37)
This method will automatically call the all()
method and return an array of ActiveRecord
instances.
Note: As this is a short-hand method only, using more complex conditions, like ['!=', 'id', 1] will not work. If you need to specify more complex conditions, use find() in combination with where() instead.
See the following code for usage examples:
// find the customers whose primary key value is 10
$customers = Customer::findAll(10);
// the above code is equivalent to:
$customers = Customer::find()->where(['id' => 10])->all();
// find the customers whose primary key value is 10, 11 or 12.
$customers = Customer::findAll([10, 11, 12]);
// the above code is equivalent to:
$customers = Customer::find()->where(['id' => [10, 11, 12]])->all();
// find customers whose age is 30 and whose status is 1
$customers = Customer::findAll(['age' => 30, 'status' => 1]);
// the above code is equivalent to:
$customers = Customer::find()->where(['age' => 30, 'status' => 1])->all();
If you need to pass user input to this method, make sure the input value is scalar or in case of array condition, make sure the array structure can not be changed from the outside:
// yii\web\Controller ensures that $id is scalar
public function actionView($id)
{
$model = Post::findOne($id);
// ...
}
// explicitly specifying the colum to search, passing a scalar or array here will always result in finding a single record
$model = Post::findOne(['id' => Yii::$app->request->get('id')]);
// do NOT use the following code! it is possible to inject an array condition to filter by arbitrary column values!
$model = Post::findOne(Yii::$app->request->get('id'));
public static static[] findAll ( $condition ) | ||
$condition | mixed |
Primary key value or a set of column values |
return | yii\db\BaseActiveRecord[] |
An array of ActiveRecord instances, or an empty array if nothing matches. |
---|
public static function findAll($condition)
{
return static::findByCondition($condition)->all();
}
Finds a current user for a given email.
This is used for the login form, and can therefore not be used for api users (since 1.1.0)
public static yii\db\ActiveRecord|null findByEmail ( $email ) | ||
string |
The email address to find the user from. |
public static function findByEmail($email)
{
return self::find()->andWhere(['email' => $email, 'is_api_user' => false])->one();
}
Defined in: yii\db\ActiveRecord::findBySql()
Creates an yii\db\ActiveQuery instance with a given SQL statement.
Note that because the SQL statement is already specified, calling additional
query modification methods (such as where()
, order()
) on the created yii\db\ActiveQuery
instance will have no effect. However, calling with()
, asArray()
or indexBy()
is
still fine.
Below is an example:
$customers = Customer::findBySql('SELECT * FROM customer')->all();
public static yii\db\ActiveQuery findBySql ( $sql, $params = [] ) | ||
$sql | string |
The SQL statement to be executed |
$params | array |
Parameters to be bound to the SQL statement during execution. |
return | yii\db\ActiveQuery |
The newly created yii\db\ActiveQuery instance |
---|
public static function findBySql($sql, $params = [])
{
$query = static::find();
$query->sql = $sql;
return $query->params($params);
}
Finds an identity by the given ID.
public static yii\web\IdentityInterface|null findIdentity ( $id ) | ||
$id | string|integer |
The ID to be looked for |
return | yii\web\IdentityInterface|null |
The identity object that matches the given ID. Null should be returned if such an identity cannot be found or the identity is not in an active state (disabled, deleted, etc.) |
---|
public static function findIdentity($id)
{
$where = ['{{%admin_user}}.id' => $id, 'is_destroyed' => false, 'is_api_user' => false];
if (Module::getInstance()->logoutOnUserIpChange) {
$where['ip'] = Yii::$app->request->userIP;
}
return static::find()->joinWith(['userLogins ul'])->andWhere($where)->one();
}
Finds an identity by the given token.
public static yii\web\IdentityInterface|null findIdentityByAccessToken ( $token, $type = null ) | ||
$token | mixed |
The token to be looked for |
$type | mixed |
The type of the token. The value of this parameter depends on the implementation.
For example, yii\filters\auth\HttpBearerAuth will set this parameter to be |
return | yii\web\IdentityInterface|null |
The identity object that matches the given token. Null should be returned if such an identity cannot be found or the identity is not in an active state (disabled, deleted, etc.) |
---|
public static function findIdentityByAccessToken($token, $type = null)
{
if (empty($token) || !is_scalar($token)) {
throw new InvalidArgumentException("The provided access token is invalid.");
}
$event = new UserAccessTokenLoginEvent();
$event->type = $type;
$event->token = $token;
Yii::$app->trigger(Module::EVENT_USER_ACCESS_TOKEN_LOGIN, $event);
if ($event->user) {
$user = $event->user;
} else {
$user = static::findOne(['auth_token' => $token]);
}
// if the given user can be found, udpate the api last activity timestamp.
if ($user) {
$user->updateAttributes(['api_last_activity' => time()]);
}
// this ensures the user cookie won't be destroyed.
Yii::$app->adminuser->enableAutoLogin = false;
return $user;
}
Defined in: luya\admin\ngrest\base\NgRestModel::findLatestPrimaryKeyValue()
Get an array with the latest primary key value.
public static array findLatestPrimaryKeyValue ( ) | ||
return | array |
An array with latest primary key value, for example [10] or if composite keys [10,4] |
---|
public static function findLatestPrimaryKeyValue()
{
$orderBy = [];
foreach (static::primaryKey() as $pkName) {
$orderBy[$pkName] = SORT_DESC;
}
return self::ngRestFind()->select(static::primaryKey())->orderBy($orderBy)->asArray()->limit(1)->column();
}
Defined in: yii\db\BaseActiveRecord::findOne()
Returns a single active record model instance by a primary key or an array of column values.
The method accepts:
- a scalar value (integer or string): query by a single primary key value and return the
corresponding record (or
null
if not found). - a non-associative array: query by a list of primary key values and return the
first record (or
null
if not found). - an associative array of name-value pairs: query by a set of attribute values and return a single record
matching all of them (or
null
if not found). Note that['id' => 1, 2]
is treated as a non-associative array. Column names are limited to current records table columns for SQL DBMS, or filtered otherwise to be limited to simple filter conditions. - a yii\db\Expression: The expression will be used directly. (@since 2.0.37)
That this method will automatically call the one()
method and return an ActiveRecord
instance.
Note: As this is a short-hand method only, using more complex conditions, like ['!=', 'id', 1] will not work. If you need to specify more complex conditions, use find() in combination with where() instead.
See the following code for usage examples:
// find a single customer whose primary key value is 10
$customer = Customer::findOne(10);
// the above code is equivalent to:
$customer = Customer::find()->where(['id' => 10])->one();
// find the customers whose primary key value is 10, 11 or 12.
$customers = Customer::findOne([10, 11, 12]);
// the above code is equivalent to:
$customers = Customer::find()->where(['id' => [10, 11, 12]])->one();
// find the first customer whose age is 30 and whose status is 1
$customer = Customer::findOne(['age' => 30, 'status' => 1]);
// the above code is equivalent to:
$customer = Customer::find()->where(['age' => 30, 'status' => 1])->one();
If you need to pass user input to this method, make sure the input value is scalar or in case of array condition, make sure the array structure can not be changed from the outside:
// yii\web\Controller ensures that $id is scalar
public function actionView($id)
{
$model = Post::findOne($id);
// ...
}
// explicitly specifying the colum to search, passing a scalar or array here will always result in finding a single record
$model = Post::findOne(['id' => Yii::$app->request->get('id')]);
// do NOT use the following code! it is possible to inject an array condition to filter by arbitrary column values!
$model = Post::findOne(Yii::$app->request->get('id'));
public static static|null findOne ( $condition ) | ||
$condition | mixed |
Primary key value or a set of column values |
return | yii\db\BaseActiveRecord|null |
ActiveRecord instance matching the condition, or |
---|
public static function findOne($condition)
{
return static::findByCondition($condition)->one();
}
Defined in: yii\base\Model::formName()
Returns the form name that this model class should use.
The form name is mainly used by yii\widgets\ActiveForm to determine how to name the input fields for the attributes in a model. If the form name is "A" and an attribute name is "b", then the corresponding input name would be "A[b]". If the form name is an empty string, then the input name would be "b".
The purpose of the above naming schema is that for forms which contain multiple different models, the attributes of each model are grouped in sub-arrays of the POST-data and it is easier to differentiate between them.
By default, this method returns the model class name (without the namespace part) as the form name. You may override it when the model is used in different forms.
See also load().
public string formName ( ) | ||
return | string |
The form name of this model class. |
---|---|---|
throws | yii\base\InvalidConfigException |
when form is defined with anonymous class and |
public function formName()
{
$reflector = new ReflectionClass($this);
if (PHP_VERSION_ID >= 70000 && $reflector->isAnonymous()) {
throw new InvalidConfigException('The "formName()" method should be explicitly defined for anonymous models');
}
return $reflector->getShortName();
}
Defined in: yii\base\Model::generateAttributeLabel()
Generates a user friendly attribute label based on the give attribute name.
This is done by replacing underscores, dashes and dots with blanks and changing the first letter of each word to upper case. For example, 'department_name' or 'DepartmentName' will generate 'Department Name'.
public string generateAttributeLabel ( $name ) | ||
$name | string |
The column name |
return | string |
The attribute label |
---|
public function generateAttributeLabel($name)
{
return Inflector::camel2words($name, true);
}
Defined in: luya\admin\ngrest\base\NgRestModel::generateNgRestRelations()
Generate an array with NgRestRelation objects
public array generateNgRestRelations ( ) |
public function generateNgRestRelations()
{
$relations = [];
// generate relations
foreach ($this->ngRestRelations() as $key => $item) {
/** @var $item \luya\admin\ngrest\base\NgRestRelationInterface */
if (!$item instanceof NgRestRelation) {
if (!isset($item['class'])) {
$item['class'] = 'luya\admin\ngrest\base\NgRestRelation';
}
$item = Yii::createObject($item);
}
$item->setModelClass(get_class($this)); // former: $item->setModelClass($this->className());
$item->setArrayIndex($key);
$relations[$key] = $item;
}
return $relations;
}
public static void generateResetEmail ( $url, $title, $text ) | ||
$url | ||
$title | ||
$text |
public static function generateResetEmail($url, $title, $text)
{
$result = new Parser(Yii::$app->request->userAgent);
return Yii::$app->view->render('@admin/views/mail/_reset.php', [
'url' => Url::domain(Url::base(true)),
'token' => Html::a(Module::t('reset_email_btn_label'), $url),
'browser' => $result->toString(),
'title' => $title,
'text' => $text,
]);
}
Render user token based email:
This is currently used for secure token and email validation tokens.
See also https://mjml.io/try-it-live/Hk9rJe68B.
public static void generateTokenEmail ( $token, $title, $text ) | ||
$token | ||
$title | ||
$text |
public static function generateTokenEmail($token, $title, $text)
{
$result = new Parser(Yii::$app->request->userAgent);
return Yii::$app->view->render('@admin/views/mail/_token.php', [
'url' => Url::domain(Url::base(true)),
'token' => $token,
'browser' => $result->toString(),
'title' => $title,
'text' => $text,
]);
}
Defined in: luya\admin\ngrest\base\NgRestModel::genericSearch()
The Query which is going to be performend to the concret implementation.
public yii\db\QueryInterface|yii\db\ActiveQueryInterface|array genericSearch ( $searchQuery ) | ||
$searchQuery | string |
An HTML encoded string to lookup the database table. |
public function genericSearch($searchQuery)
{
return $this->ngRestFullQuerySearch($searchQuery)->select($this->genericSearchFields());
}
The fields to lookup with the search query.
public array genericSearchFields ( ) | ||
return | array |
An array with all fields where should be looked up against the genericSearch query. |
---|
public function genericSearchFields()
{
return ['firstname', 'lastname', 'email'];
}
Defined in: luya\admin\ngrest\base\NgRestModel::genericSearchHiddenFields()
An array with fields which will be hidden in the search output, but are available for the State Provider functions.
public array genericSearchHiddenFields ( ) | ||
return | array |
An array with fields which should be hide from the results, where value is the field name:
|
---|
public function genericSearchHiddenFields()
{
return [];
}
Defined in: luya\admin\ngrest\base\NgRestModel::genericSearchStateProvider()
The state provider is used to click on the items. Retuns an array with a configuration for the angular state provider. Example
return [
'state' => 'custom.cmsedit',
'params' => [
'navId' => 'id'
]
];
The example above would look like this in the angular context
$state.go('custom.cmsedit', { navId : 1 });
All variable for the params are based on the generichSearchFields()
, if a variable is defined in the
generichSearchFields() method it can be used with % prefix in params value.
If genericSearchStateProvider() returns false the ability to click on the detail icon is disabled.
public array|boolean genericSearchStateProvider ( ) | ||
return | array|boolean |
Returns the state config or when not clickable returns false |
---|
public function genericSearchStateProvider()
{
return [
'state' => 'default.route.detail',
'params' => [
'id' => 'id',
],
];
}
Defined in: yii\base\Model::getActiveValidators()
Returns the validators applicable to the current $scenario.
public yii\validators\Validator[] getActiveValidators ( $attribute = null ) | ||
$attribute | string|null |
The name of the attribute whose applicable validators should be returned. If this is null, the validators for ALL attributes in the model will be returned. |
return | yii\validators\Validator[] |
The validators applicable to the current $scenario. |
---|
public function getActiveValidators($attribute = null)
{
$activeAttributes = $this->activeAttributes();
if ($attribute !== null && !in_array($attribute, $activeAttributes, true)) {
return [];
}
$scenario = $this->getScenario();
$validators = [];
foreach ($this->getValidators() as $validator) {
if ($attribute === null) {
$validatorAttributes = $validator->getValidationAttributes($activeAttributes);
$attributeValid = !empty($validatorAttributes);
} else {
$attributeValid = in_array($attribute, $validator->getValidationAttributes($attribute), true);
}
if ($attributeValid && $validator->isActive($scenario)) {
$validators[] = $validator;
}
}
return $validators;
}
Generate and save a email verification token and return the token.
public mixed getAndStoreEmailVerificationToken ( ) |
public function getAndStoreEmailVerificationToken()
{
$token = $this->generateToken(6);
$this->updateAttributes([
'email_verification_token' => sha1($token),
'email_verification_token_timestamp' => time(),
]);
return $token;
}
Generate, store and return the secure Login token.
public string getAndStoreToken ( ) |
public function getAndStoreToken()
{
$token = $this->generateToken(6);
$this->setAttribute('secure_token', sha1($token));
$this->setAttribute('secure_token_timestamp', time());
$this->update(false);
return $token;
}
Defined in: yii\db\BaseActiveRecord::getAttribute()
Returns the named attribute value.
If this record is the result of a query and the attribute is not loaded,
null
will be returned.
See also hasAttribute().
public mixed getAttribute ( $name ) | ||
$name | string |
The attribute name |
return | mixed |
The attribute value. |
---|
public function getAttribute($name)
{
return isset($this->_attributes[$name]) ? $this->_attributes[$name] : null;
}
Defined in: yii\db\BaseActiveRecord::getAttributeHint()
Returns the text hint for the specified attribute.
If the attribute looks like relatedModel.attribute
, then the attribute will be received from the related model.
See also attributeHints().
public string getAttributeHint ( $attribute ) | ||
$attribute | string |
The attribute name |
return | string |
The attribute hint |
---|
public function getAttributeHint($attribute)
{
$hints = $this->attributeHints();
if (isset($hints[$attribute])) {
return $hints[$attribute];
} elseif (strpos($attribute, '.')) {
$attributeParts = explode('.', $attribute);
$neededAttribute = array_pop($attributeParts);
$relatedModel = $this;
foreach ($attributeParts as $relationName) {
if ($relatedModel->isRelationPopulated($relationName) && $relatedModel->$relationName instanceof self) {
$relatedModel = $relatedModel->$relationName;
} else {
try {
$relation = $relatedModel->getRelation($relationName);
} catch (InvalidParamException $e) {
return '';
}
/* @var $modelClass ActiveRecordInterface */
$modelClass = $relation->modelClass;
$relatedModel = $modelClass::instance();
}
}
$hints = $relatedModel->attributeHints();
if (isset($hints[$neededAttribute])) {
return $hints[$neededAttribute];
}
}
return '';
}
Defined in: yii\db\BaseActiveRecord::getAttributeLabel()
Returns the text label for the specified attribute.
If the attribute looks like relatedModel.attribute
, then the attribute will be received from the related model.
See also:
public string getAttributeLabel ( $attribute ) | ||
$attribute | string |
The attribute name |
return | string |
The attribute label |
---|
public function getAttributeLabel($attribute)
{
$labels = $this->attributeLabels();
if (isset($labels[$attribute])) {
return $labels[$attribute];
} elseif (strpos($attribute, '.')) {
$attributeParts = explode('.', $attribute);
$neededAttribute = array_pop($attributeParts);
$relatedModel = $this;
foreach ($attributeParts as $relationName) {
if ($relatedModel->isRelationPopulated($relationName) && $relatedModel->$relationName instanceof self) {
$relatedModel = $relatedModel->$relationName;
} else {
try {
$relation = $relatedModel->getRelation($relationName);
} catch (InvalidParamException $e) {
return $this->generateAttributeLabel($attribute);
}
/* @var $modelClass ActiveRecordInterface */
$modelClass = $relation->modelClass;
$relatedModel = $modelClass::instance();
}
}
$labels = $relatedModel->attributeLabels();
if (isset($labels[$neededAttribute])) {
return $labels[$neededAttribute];
}
}
return $this->generateAttributeLabel($attribute);
}
Defined in: yii\base\Model::getAttributes()
Returns attribute values.
public array getAttributes ( $names = null, $except = [] ) | ||
$names | array|null |
List of attributes whose value needs to be returned. Defaults to null, meaning all attributes listed in attributes() will be returned. If it is an array, only the attributes in the array will be returned. |
$except | array |
List of attributes whose value should NOT be returned. |
return | array |
Attribute values (name => value). |
---|
public function getAttributes($names = null, $except = [])
{
$values = [];
if ($names === null) {
$names = $this->attributes();
}
foreach ($names as $name) {
$values[$name] = $this->$name;
}
foreach ($except as $name) {
unset($values[$name]);
}
return $values;
}
Returns a key that can be used to check the validity of a given identity ID.
The key should be unique for each individual user, and should be persistent so that it can be used to check the validity of the user identity.
The space of such keys should be big enough to defeat potential identity attacks.
The returned key is used to validate session and auto-login (if yii\web\User::$enableAutoLogin is enabled).
Make sure to invalidate earlier issued authKeys when you implement force user logout, password change and other scenarios, that require forceful access revocation for old sessions.
public string|null getAuthKey ( ) | ||
return | string|null |
A key that is used to check the validity of a given identity ID. |
---|
public function getAuthKey()
{
$userAgent = Yii::$app->request->userAgent;
// no user agent, dissable auto login
if (empty($userAgent)) {
return false;
}
$checksum = UserDevice::generateUserAgentChecksum($userAgent);
$model = UserDevice::find()->where(['user_id' => $this->id, 'user_agent_checksum' => $checksum])->one();
if ($model) {
// update last update timestamp and return existing auth key
$model->touch('updated_at');
return $model->auth_key;
}
$model = new UserDevice();
$model->user_id = $this->id;
$model->user_agent = $userAgent;
$model->user_agent_checksum = $checksum;
$model->auth_key = Yii::$app->security->generatePasswordHash(Yii::$app->security->generateRandomKey() . $checksum);
if ($model->save()) {
return $model->auth_key;
}
return false;
}
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;
}
Defined in: yii\db\ActiveRecord::getDb()
Returns the database connection used by this AR class.
By default, the "db" application component is used as the database connection. You may override this method if you want to use a different database connection.
public static yii\db\Connection getDb ( ) | ||
return | yii\db\Connection |
The database connection used by this AR class. |
---|
public static function getDb()
{
return Yii::$app->getDb();
}
Devices Active Query
public luya\admin\models\UserDevice[] getDevices ( ) |
public function getDevices()
{
return $this->hasMany(UserDevice::class, ['user_id' => 'id']);
}
Defined in: yii\db\BaseActiveRecord::getDirtyAttributes()
Returns the attribute values that have been modified since they are loaded or saved most recently.
The comparison of new and old values is made for identical values using ===
.
public array getDirtyAttributes ( $names = null ) | ||
$names | string[]|null |
The names of the attributes whose values may be returned if they are changed recently. If null, attributes() will be used. |
return | array |
The changed attribute values (name-value pairs) |
---|
public function getDirtyAttributes($names = null)
{
if ($names === null) {
$names = $this->attributes();
}
$names = array_flip($names);
$attributes = [];
if ($this->_oldAttributes === null) {
foreach ($this->_attributes as $name => $value) {
if (isset($names[$name])) {
$attributes[$name] = $value;
}
}
} else {
foreach ($this->_attributes as $name => $value) {
if (isset($names[$name]) && (!array_key_exists($name, $this->_oldAttributes) || $this->isAttributeDirty($name, $value))) {
$attributes[$name] = $value;
}
}
}
return $attributes;
}
Defined in: yii\base\Model::getErrorSummary()
Returns the errors for all attributes as a one-dimensional array.
See also:
public array getErrorSummary ( $showAllErrors ) | ||
$showAllErrors | boolean |
Boolean, if set to true every error message for each attribute will be shown otherwise only the first error message for each attribute will be shown. |
return | array |
Errors for all attributes as a one-dimensional array. Empty array is returned if no error. |
---|
public function getErrorSummary($showAllErrors)
{
$lines = [];
$errors = $showAllErrors ? $this->getErrors() : $this->getFirstErrors();
foreach ($errors as $es) {
$lines = array_merge($lines, (array)$es);
}
return $lines;
}
Defined in: yii\base\Model::getErrors()
Returns the errors for all attributes or a single attribute.
See also:
public array getErrors ( $attribute = null ) | ||
$attribute | string|null |
Attribute name. Use null to retrieve errors for all attributes. |
return | array |
Errors for all attributes or the specified attribute. Empty array is returned if no error. See getErrors() for detailed description. Note that when returning errors for all attributes, the result is a two-dimensional array, like the following:
|
---|
public function getErrors($attribute = null)
{
if ($attribute === null) {
return $this->_errors === null ? [] : $this->_errors;
}
return isset($this->_errors[$attribute]) ? $this->_errors[$attribute] : [];
}
Defined in: yii\base\Model::getFirstError()
Returns the first error of the specified attribute.
See also:
public string|null getFirstError ( $attribute ) | ||
$attribute | string |
Attribute name. |
return | string|null |
The error message. Null is returned if no error. |
---|
public function getFirstError($attribute)
{
return isset($this->_errors[$attribute]) ? reset($this->_errors[$attribute]) : null;
}
Defined in: yii\base\Model::getFirstErrors()
Returns the first error of every attribute in the model.
See also:
public array getFirstErrors ( ) | ||
return | array |
The first errors. The array keys are the attribute names, and the array values are the corresponding error messages. An empty array will be returned if there is no error. |
---|
public function getFirstErrors()
{
if (empty($this->_errors)) {
return [];
}
$errors = [];
foreach ($this->_errors as $name => $es) {
if (!empty($es)) {
$errors[$name] = reset($es);
}
}
return $errors;
}
Return the current related groups.
public yii\db\ActiveQuery getGroups ( ) |
public function getGroups()
{
return $this->hasMany(Group::class, ['id' => 'group_id'])->viaTable('{{%admin_user_group}}', ['user_id' => 'id']);
}
Defined in: luya\admin\ngrest\base\NgRestModel::getI18nOldValue()
Get the old/original i18n value from the database.
See also https://github.com/luyadev/luya-module-admin/pull/567.
public string getI18nOldValue ( $attributeName ) | ||
$attributeName | string | |
return | string |
The json value from either the old value setter array or the active record getOldAttribute() method. |
---|
public function getI18nOldValue($attributeName)
{
return array_key_exists($attributeName, $this->_i18nOldValues) ? $this->_i18nOldValues[$attributeName] : $this->getOldAttribute($attributeName);
}
Returns an ID that can uniquely identify a user identity.
public string|integer getId ( ) | ||
return | string|integer |
An ID that uniquely identifies a user identity. |
---|
public function getId()
{
return $this->id;
}
Defined in: yii\db\BaseActiveRecord::getIsNewRecord()
Returns a value indicating whether the current record is new.
public boolean getIsNewRecord ( ) | ||
return | boolean |
Whether the record is new and should be inserted when calling save(). |
---|
public function getIsNewRecord()
{
return $this->_oldAttributes === null;
}
Defined in: luya\admin\ngrest\base\NgRestModel::getIsNgRestContext()
Whether the current model is in api context (REST SCENARIOS or CALL TYPE) context or not.
public boolean getIsNgRestContext ( ) | ||
return | boolean |
Whether the current model is in api context or not. |
---|
public function getIsNgRestContext()
{
if ($this->scenario == RestActiveController::SCENARIO_RESTCREATE
|| $this->scenario == RestActiveController::SCENARIO_RESTUPDATE
|| $this->getNgRestCallType()) {
return true;
}
return false;
}
Defined in: yii\base\Model::getIterator()
Returns an iterator for traversing the attributes in the model.
This method is required by the interface IteratorAggregate.
public ArrayIterator getIterator ( ) | ||
return | ArrayIterator |
An iterator for traversing the items in the list. |
---|
#[\ReturnTypeWillChange]
public function getIterator()
{
$attributes = $this->getAttributes();
return new ArrayIterator($attributes);
}
Get the last login Timestamp
public void getLastloginTimestamp ( ) |
public function getLastloginTimestamp()
{
return $this->getUserLogins()->select(['timestamp_create'])->scalar();
}
Defined in: luya\admin\ngrest\base\NgRestModel::getNgRestCallType()
Determine the current call type based on get params as they can change the output behavior to make the ngrest crud list view.
public boolean|string getNgRestCallType ( ) |
public function getNgRestCallType()
{
if ($this->_ngrestCallType === null) {
$this->_ngrestCallType = (!Yii::$app instanceof \yii\web\Application) ? false : Yii::$app->request->get('ngrestCallType', false);
}
return $this->_ngrestCallType;
}
Defined in: luya\admin\ngrest\base\NgRestModel::getNgRestConfig()
Build and call the full config object if not build yet for this model.
public luya\admin\ngrest\Config getNgRestConfig ( ) |
public function getNgRestConfig()
{
if ($this->_config == null) {
$config = new Config();
// Generate config builder object
$configBuilder = new ConfigBuilder(static::class);
$this->ngRestConfig($configBuilder);
$config->setConfig($configBuilder->getConfig());
foreach ($this->i18n as $fieldName) {
$config->appendFieldOption($fieldName, 'i18n', true);
}
// set model as context in order to lazy load data like (https://github.com/luyadev/luya-module-admin/pull/422)
// - ngRestFilters
// - getNgRestPrimaryKey
// - ngRestActiveButtons
// - ngRestRelations (trough: generateNgRestRelations())
$config->setModel($this);
// copy model data into config
$config->setApiEndpoint(static::ngRestApiEndpoint());
$config->setDefaultOrder($this->ngRestListOrder());
$config->setAttributeGroups($this->ngRestAttributeGroups());
$config->setGroupByField($this->ngRestGroupByField());
$config->setGroupByExpanded($this->ngRestGroupByExpanded());
$config->setTableName(static::tableName());
$config->setAttributeLabels($this->attributeLabels());
$config->setActiveSelections($this->ngRestActiveSelections());
$config->onFinish();
$this->_config = $config;
}
return $this->_config;
}
Defined in: luya\admin\ngrest\base\NgRestModel::getNgRestPrimaryKey()
Getter method for NgRest Primary Key.
public string getNgRestPrimaryKey ( ) | ||
throws | yii\base\InvalidConfigException |
---|
public function getNgRestPrimaryKey()
{
if ($this->_ngRestPrimaryKey === null) {
$keys = static::primaryKey();
if (!isset($keys[0])) {
throw new InvalidConfigException("The NgRestModel '".self::class."' requires at least one primaryKey in order to work.");
}
return (array) $keys;
}
return $this->_ngRestPrimaryKey;
}
Defined in: luya\admin\ngrest\base\NgRestModel::getNgRestRelationByIndex()
Get the NgRest Relation definition object.
public luya\admin\ngrest\base\NgRestRelationInterface getNgRestRelationByIndex ( $index ) | ||
$index | integer |
public function getNgRestRelationByIndex($index)
{
$relations = $this->generateNgRestRelations();
return $relations[$index] ?? false;
}
Defined in: luya\admin\ngrest\base\NgRestModel::getNgRestScopeConfigOptions()
Return the scope definition third entry looking for button condition Currently support only buttonCondition
Example of returned array :
[
"buttonCondition" => [
["update", "{title}>1"],
["delete", "{title}==2 && {firstname}=='bar'"]
]
]
public array getNgRestScopeConfigOptions ( $config ) | ||
$config | ||
return | array |
ButtonCondition indexed array |
---|
public function getNgRestScopeConfigOptions($config)
{
$configOptions = [];
foreach ($this->ngRestScopes() as $arrayConfig) {
$scope = is_string($arrayConfig[0]) ? [$arrayConfig[0]] : $arrayConfig[0];
$buttonConditionConfig = $this->ngRestConfigButtonCondition($arrayConfig);
if (!empty($buttonConditionConfig)) {
foreach ($scope as $single_scope) {
$configOptions['buttonCondition'][] = [$single_scope, $buttonConditionConfig];
}
}
}
return $configOptions;
}
Defined in: luya\admin\ngrest\base\NgRestModel::getNgRestServices()
Triggers the event service event and returns the resolved data.
public mixed getNgRestServices ( ) | ||
return | mixed |
The service data. |
---|
public function getNgRestServices()
{
$this->trigger(self::EVENT_SERVICE_NGREST);
return $this->ngRestServiceArray;
}
Get all ngrest log entries for this user.
public yii\db\ActiveQuery getNgrestLogs ( ) |
public function getNgrestLogs()
{
return $this->hasMany(NgrestLog::class, ['user_id' => 'id']);
}
Defined in: yii\db\BaseActiveRecord::getOldAttribute()
Returns the old value of the named attribute.
If this record is the result of a query and the attribute is not loaded,
null
will be returned.
See also hasAttribute().
public mixed getOldAttribute ( $name ) | ||
$name | string |
The attribute name |
return | mixed |
The old attribute value. |
---|
public function getOldAttribute($name)
{
return isset($this->_oldAttributes[$name]) ? $this->_oldAttributes[$name] : null;
}
Defined in: yii\db\BaseActiveRecord::getOldAttributes()
Returns the old attribute values.
public array getOldAttributes ( ) | ||
return | array |
The old attribute values (name-value pairs) |
---|
public function getOldAttributes()
{
return $this->_oldAttributes === null ? [] : $this->_oldAttributes;
}
Defined in: yii\db\BaseActiveRecord::getOldPrimaryKey()
Returns the old primary key value(s).
This refers to the primary key value that is populated into the record after executing a find method (e.g. find(), findOne()). The value remains unchanged even if the primary key attribute is manually assigned with a different value.
public mixed getOldPrimaryKey ( $asArray = false ) | ||
$asArray | boolean |
Whether to return the primary key value as an array. If |
return | mixed |
The old primary key value. An array (column name => column value) is returned if the primary key
is composite or |
---|---|---|
throws | yii\db\Exception |
if the AR model does not have a primary key |
public function getOldPrimaryKey($asArray = false)
{
$keys = static::primaryKey();
if (empty($keys)) {
throw new Exception(get_class($this) . ' does not have a primary key. You should either define a primary key for the corresponding table or override the primaryKey() method.');
}
if (!$asArray && count($keys) === 1) {
return isset($this->_oldAttributes[$keys[0]]) ? $this->_oldAttributes[$keys[0]] : null;
}
$values = [];
foreach ($keys as $name) {
$values[$name] = isset($this->_oldAttributes[$name]) ? $this->_oldAttributes[$name] : null;
}
return $values;
}
Defined in: yii\db\BaseActiveRecord::getPrimaryKey()
Returns the primary key value(s).
public mixed getPrimaryKey ( $asArray = false ) | ||
$asArray | boolean |
Whether to return the primary key value as an array. If |
return | mixed |
The primary key value. An array (column name => column value) is returned if the primary key
is composite or |
---|
public function getPrimaryKey($asArray = false)
{
$keys = static::primaryKey();
if (!$asArray && count($keys) === 1) {
return isset($this->_attributes[$keys[0]]) ? $this->_attributes[$keys[0]] : null;
}
$values = [];
foreach ($keys as $name) {
$values[$name] = isset($this->_attributes[$name]) ? $this->_attributes[$name] : null;
}
return $values;
}
Defined in: yii\db\BaseActiveRecord::getRelatedRecords()
Returns all populated related records.
See also getRelation().
public array getRelatedRecords ( ) | ||
return | array |
An array of related records indexed by relation names. |
---|
public function getRelatedRecords()
{
return $this->_related;
}
Defined in: yii\db\BaseActiveRecord::getRelation()
Returns the relation object with the specified name.
A relation is defined by a getter method which returns an yii\db\ActiveQueryInterface object. It can be declared in either the Active Record class itself or one of its behaviors.
public yii\db\ActiveQueryInterface|yii\db\ActiveQuery|null getRelation ( $name, $throwException = true ) | ||
$name | string |
The relation name, e.g. |
$throwException | boolean |
Whether to throw exception if the relation does not exist. |
return | yii\db\ActiveQueryInterface|yii\db\ActiveQuery|null |
The relational query object. If the relation does not exist
and |
---|---|---|
throws | yii\base\InvalidArgumentException |
if the named relation does not exist. |
public function getRelation($name, $throwException = true)
{
$getter = 'get' . $name;
try {
// the relation could be defined in a behavior
$relation = $this->$getter();
} catch (UnknownMethodException $e) {
if ($throwException) {
throw new InvalidArgumentException(get_class($this) . ' has no relation named "' . $name . '".', 0, $e);
}
return null;
}
if (!$relation instanceof ActiveQueryInterface) {
if ($throwException) {
throw new InvalidArgumentException(get_class($this) . ' has no relation named "' . $name . '".');
}
return null;
}
if (method_exists($this, $getter)) {
// relation name is case sensitive, trying to validate it when the relation is defined within this class
$method = new \ReflectionMethod($this, $getter);
$realName = lcfirst(substr($method->getName(), 3));
if ($realName !== $name) {
if ($throwException) {
throw new InvalidArgumentException('Relation names are case sensitive. ' . get_class($this) . " has a relation named \"$realName\" instead of \"$name\".");
}
return null;
}
}
return $relation;
}
Defined in: yii\base\Model::getScenario()
Returns the scenario that this model is used in.
Scenario affects how validation is performed and which attributes can be massively assigned.
public string getScenario ( ) | ||
return | string |
The scenario that this model is in. Defaults to SCENARIO_DEFAULT. |
---|
public function getScenario()
{
return $this->_scenario;
}
Get user settings objects.
public luya\admin\models\UserSetting getSetting ( ) |
public function getSetting()
{
if ($this->_setting === null) {
$settingsArray = (empty($this->settings)) ? [] : Json::decode($this->settings);
$this->_setting = Yii::createObject(['class' => UserSetting::class, 'sender' => $this, 'data' => $settingsArray]);
}
return $this->_setting;
}
Defined in: yii\db\ActiveRecord::getTableSchema()
Returns the schema information of the DB table associated with this AR class.
public static yii\db\TableSchema getTableSchema ( ) | ||
return | yii\db\TableSchema |
The schema information of the DB table associated with this AR class. |
---|---|---|
throws | yii\base\InvalidConfigException |
if the table for the AR class does not exist. |
public static function getTableSchema()
{
$tableSchema = static::getDb()
->getSchema()
->getTableSchema(static::tableName());
if ($tableSchema === null) {
throw new InvalidConfigException('The table does not exist: ' . static::tableName());
}
return $tableSchema;
}
Get the title Mr, Mrs. as string for the current user.
public string getTitleNamed ( ) |
public function getTitleNamed()
{
return !isset(self::getTitles()[$this->title]) ?: self::getTitles()[$this->title];
}
Returns the available titles (mr, mrs index by numberic identifier
public static array getTitles ( ) |
public static function getTitles()
{
return [
1 => Module::t('model_user_title_mr'),
2 => Module::t('model_user_title_mrs'),
];
}
Get the user logins for the given user.
public yii\db\ActiveQuery getUserLogins ( ) |
public function getUserLogins()
{
return $this->hasMany(UserLogin::class, ['user_id' => 'id']);
}
Defined in: yii\base\Model::getValidators()
Returns all the validators declared in rules().
This method differs from getActiveValidators() in that the latter only returns the validators applicable to the current $scenario.
Because this method returns an ArrayObject object, you may manipulate it by inserting or removing validators (useful in model behaviors). For example,
$model->validators[] = $newValidator;
public ArrayObject|yii\validators\Validator[] getValidators ( ) | ||
return | ArrayObject|yii\validators\Validator[] |
All the validators declared in the model. |
---|
public function getValidators()
{
if ($this->_validators === null) {
$this->_validators = $this->createValidators();
}
return $this->_validators;
}
Defined in: luya\admin\ngrest\base\NgRestModel::handleNgRestActiveButton()
Handle a given active button based on the hash (classname in sha1).
public array|boolean handleNgRestActiveButton ( $hash ) | ||
$hash | string |
The hash name, equals to the class name of the button |
return | array|boolean |
Returns the button array response or false if not found. |
---|
public function handleNgRestActiveButton($hash)
{
foreach ($this->ngRestActiveButtons() as $item) {
if (sha1($item['class']) == $hash) {
$button = Yii::createObject($item);
return $button->handle($this);
}
}
return false;
}
Defined in: yii\db\BaseActiveRecord::hasAttribute()
Returns a value indicating whether the model has an attribute with the specified name.
public boolean hasAttribute ( $name ) | ||
$name | string |
The name of the attribute |
return | boolean |
Whether the model has an attribute with the specified name. |
---|
public function hasAttribute($name)
{
return isset($this->_attributes[$name]) || in_array($name, $this->attributes(), true);
}
Defined in: yii\base\Model::hasErrors()
Returns a value indicating whether there is any validation error.
public boolean hasErrors ( $attribute = null ) | ||
$attribute | string|null |
Attribute name. Use null to check all attributes. |
return | boolean |
Whether there is any error. |
---|
public function hasErrors($attribute = null)
{
return $attribute === null ? !empty($this->_errors) : isset($this->_errors[$attribute]);
}
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\db\ActiveRecord::hasMany()
See yii\db\BaseActiveRecord::hasMany() for more info.
public yii\db\ActiveQuery hasMany ( $class, array $link ) | ||
$class | ||
$link | ||
return | yii\db\ActiveQuery |
---|
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\db\ActiveRecord::hasOne()
See yii\db\BaseActiveRecord::hasOne() for more info.
public yii\db\ActiveQuery hasOne ( $class, array $link ) | ||
$class | ||
$link | ||
return | yii\db\ActiveQuery |
---|
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\NgRestModel::i18nAttributeFallbackValue()
Returns the value for an i18n field before it was casted to the output for the current active language if empty.
The main purpose of this method is to retrieve any value from this attribute event when the current value is empty.
The value is determined by:
- Is the i18n casted value empty continue or return value.
- If preffered language is given and a none empty value exists for the preferred language return the value or continue.
- Foreach the array and return the first value which is not empty.
public string|null i18nAttributeFallbackValue ( $attributeName, $preferredLanguage = null ) | ||
$attributeName | string |
The attribute to return the fallback. |
$preferredLanguage | string |
The prefered language short code name which should be checked whether it has a value or not. |
public function i18nAttributeFallbackValue($attributeName, $preferredLanguage = null)
{
$value = $this->{$attributeName};
if (empty($value) && $this->isI18n($attributeName)) {
// get the decoded value from old attribute value.
$array = I18n::decode($this->getI18nOldValue($attributeName));
if ($preferredLanguage && isset($array[$preferredLanguage]) && !empty($array[$preferredLanguage])) {
return $this->runI18nContextOnFindPlugin($attributeName, $array[$preferredLanguage]);
}
foreach ($array as $value) {
if (!empty($value)) {
return $this->runI18nContextOnFindPlugin($attributeName, $value);
}
}
}
return $value;
}
Defined in: luya\admin\ngrest\base\NgRestModel::i18nAttributeLanguageValue()
Returns the value of an i18n attribute for the given language.
This method is commonly used in order to retrieve a value for a given language even though the application language is different.
public mixed|null i18nAttributeLanguageValue ( $attributeName, $language, $raw = false ) | ||
$attributeName | string |
The name of the attribute to find the value. |
$language | string |
The language short code. |
$raw | boolean |
If enabled the value will not be parsed through the assigned ngRestAttribute plugin and just returns the raw value from the database. |
return | mixed|null |
Returns the value, either raw or converted trough the assigned plugin. If the language is not found (maybe not set already) null is returned. |
---|
public function i18nAttributeLanguageValue($attributeName, $language, $raw = false)
{
// get the decoded value from old attribute value.
$array = I18n::decode($this->getI18nOldValue($attributeName));
// if language is available in the array
if (isset($array[$language])) {
// return the raw value from the database
if ($raw) {
return $array[$language];
}
return $this->runI18nContextOnFindPlugin($attributeName, $array[$language]);
}
return null;
}
Defined in: luya\admin\ngrest\base\NgRestModel::i18nAttributeValue()
Checks whether given attribute is in the list of i18n fields, if so the field value will be decoded and the value for the current active language is returned.
If the attribute is not in the list of attributes values, the value of the attribute is returned. So its also safe to use this function when dealing with none i18n fields.
public string i18nAttributeValue ( $attributeName ) | ||
$attributeName | string |
The attribute of the ActiveRecord to check and return its decoded i18n value. |
return | string |
A json decoded value from an i18n field. |
---|
public function i18nAttributeValue($attributeName)
{
$value = $this->{$attributeName};
if ($this->isI18n($attributeName) && Json::isJson($value)) {
return I18n::decodeFindActive($value);
}
return $this->{$attributeName};
}
Defined in: luya\admin\ngrest\base\NgRestModel::i18nAttributesValue()
Returns the decoded i18n value for a set of attributes.
public \luya\admin\ngrest\base\An i18nAttributesValue ( array $attributes ) | ||
$attributes | array |
An array with attributes to return its value |
return | \luya\admin\ngrest\base\An |
Array with where the key is the attribute name and value is the decoded i18n value |
---|
public function i18nAttributesValue(array $attributes)
{
$values = [];
foreach ($attributes as $attribute) {
$values[$attribute] = $this->i18nAttributeValue($attribute);
}
return $values;
}
Initializes the object.
This method is called at the end of the constructor. The default implementation will trigger an EVENT_INIT event.
public void init ( ) |
public function init()
{
parent::init();
$this->on(self::EVENT_BEFORE_INSERT, function () {
if ($this->scenario == RestActiveController::SCENARIO_RESTCREATE) {
$this->encodePassword();
if ($this->isNewRecord) {
$this->is_deleted = false;
$this->auth_token = Yii::$app->security->hashData(Yii::$app->security->generateRandomString(), $this->password_salt);
}
}
});
}
Defined in: yii\db\ActiveRecord::insert()
Inserts a row into the associated database table using the attribute values of this record.
This method performs the following steps in order:
- call beforeValidate() when
$runValidation
istrue
. If beforeValidate() returnsfalse
, the rest of the steps will be skipped; - call afterValidate() when
$runValidation
istrue
. If validation failed, the rest of the steps will be skipped; - call beforeSave(). If beforeSave() returns
false
, the rest of the steps will be skipped; - insert the record into database. If this fails, it will skip the rest of the steps;
- call afterSave();
In the above step 1, 2, 3 and 5, events EVENT_BEFORE_VALIDATE, EVENT_AFTER_VALIDATE, EVENT_BEFORE_INSERT, and EVENT_AFTER_INSERT will be raised by the corresponding methods.
Only the changed attribute values will be inserted into database.
If the table's primary key is auto-incremental and is null
during insertion,
it will be populated with the actual value after insertion.
For example, to insert a customer record:
$customer = new Customer;
$customer->name = $name;
$customer->email = $email;
$customer->insert();
public boolean insert ( $runValidation = true, $attributes = null ) | ||
$runValidation | boolean |
Whether to perform validation (calling validate())
before saving the record. Defaults to |
$attributes | array|null |
List of attributes that need to be saved. Defaults to |
return | boolean |
Whether the attributes are valid and the record is inserted successfully. |
---|---|---|
throws | Throwable |
in case insert failed. |
public function insert($runValidation = true, $attributes = null)
{
if ($runValidation && !$this->validate($attributes)) {
Yii::info('Model not inserted due to validation error.', __METHOD__);
return false;
}
if (!$this->isTransactional(self::OP_INSERT)) {
return $this->insertInternal($attributes);
}
$transaction = static::getDb()->beginTransaction();
try {
$result = $this->insertInternal($attributes);
if ($result === false) {
$transaction->rollBack();
} else {
$transaction->commit();
}
return $result;
} catch (\Exception $e) {
$transaction->rollBack();
throw $e;
} catch (\Throwable $e) {
$transaction->rollBack();
throw $e;
}
}
Defined in: yii\db\ActiveRecord::insertInternal()
Inserts an ActiveRecord into DB without considering transaction.
protected boolean insertInternal ( $attributes = null ) | ||
$attributes | array|null |
List of attributes that need to be saved. Defaults to |
return | boolean |
Whether the record is inserted successfully. |
---|
protected function insertInternal($attributes = null)
{
if (!$this->beforeSave(true)) {
return false;
}
$values = $this->getDirtyAttributes($attributes);
if (($primaryKeys = static::getDb()->schema->insert(static::tableName(), $values)) === false) {
return false;
}
foreach ($primaryKeys as $name => $value) {
$id = static::getTableSchema()->columns[$name]->phpTypecast($value);
$this->setAttribute($name, $id);
$values[$name] = $id;
}
$changedAttributes = array_fill_keys(array_keys($values), null);
$this->setOldAttributes($values);
$this->afterSave(true, $changedAttributes);
return true;
}
Defined in: yii\base\StaticInstanceTrait::instance()
Returns static class instance, which can be used to obtain meta information.
public static static instance ( $refresh = false ) | ||
$refresh | boolean |
Whether to re-create static instance even, if it is already cached. |
return | luya\admin\models\User |
Class instance. |
---|
public static function instance($refresh = false)
{
$className = get_called_class();
if ($refresh || !isset(self::$_instances[$className])) {
self::$_instances[$className] = Yii::createObject($className);
}
return self::$_instances[$className];
}
Defined in: yii\db\BaseActiveRecord::instantiate()
Creates an active record instance.
This method is called together with populateRecord() by yii\db\ActiveQuery. It is not meant to be used for creating new records directly.
You may override this method if the instance being created depends on the row data to be populated into the record. For example, by creating a record based on the value of a column, you may implement the so-called single-table inheritance mapping.
public static static instantiate ( $row ) | ||
$row | array |
Row data to be populated into the record. |
return | yii\db\BaseActiveRecord |
The newly created active record |
---|
public static function instantiate($row)
{
return new static();
}
Defined in: luya\admin\traits\SoftDeleteTrait::internalAndWhere()
This method will be used to performe the where querys of ngrestFind()
and find()
of the ActiveRecord.
public static array internalAndWhere ( ) | ||
return | array |
Returns an array where the key is the field and value the correspoinding value for there where statments. |
---|
public static function internalAndWhere()
{
$query = [];
foreach (static::fieldStateDescriber() as $field => $value) {
$query[static::tableName().'.'.$field] = is_array($value) ? $value[1] : !$value;
}
return $query;
}
Defined in: yii\base\Model::isAttributeActive()
Returns a value indicating whether the attribute is active in the current scenario.
See also activeAttributes().
public boolean isAttributeActive ( $attribute ) | ||
$attribute | string |
Attribute name |
return | boolean |
Whether the attribute is active in the current scenario |
---|
public function isAttributeActive($attribute)
{
return in_array($attribute, $this->activeAttributes(), true);
}
Defined in: yii\db\BaseActiveRecord::isAttributeChanged()
Returns a value indicating whether the named attribute has been changed.
public boolean isAttributeChanged ( $name, $identical = true ) | ||
$name | string |
The name of the attribute. |
$identical | boolean |
Whether the comparison of new and old value is made for
identical values using |
return | boolean |
Whether the attribute has been changed |
---|
public function isAttributeChanged($name, $identical = true)
{
if (isset($this->_attributes[$name], $this->_oldAttributes[$name])) {
if ($identical) {
return $this->_attributes[$name] !== $this->_oldAttributes[$name];
}
return $this->_attributes[$name] != $this->_oldAttributes[$name];
}
return isset($this->_attributes[$name]) || isset($this->_oldAttributes[$name]);
}
Defined in: yii\base\Model::isAttributeRequired()
Returns a value indicating whether the attribute is required.
This is determined by checking if the attribute is associated with a required validation rule in the current $scenario.
Note that when the validator has a conditional validation applied using
$when this method will return
false
regardless of the when
condition because it may be called be
before the model is loaded with data.
public boolean isAttributeRequired ( $attribute ) | ||
$attribute | string |
Attribute name |
return | boolean |
Whether the attribute is required |
---|
public function isAttributeRequired($attribute)
{
foreach ($this->getActiveValidators($attribute) as $validator) {
if ($validator instanceof RequiredValidator && $validator->when === null) {
return true;
}
}
return false;
}
Defined in: yii\base\Model::isAttributeSafe()
Returns a value indicating whether the attribute is safe for massive assignments.
See also safeAttributes().
public boolean isAttributeSafe ( $attribute ) | ||
$attribute | string |
Attribute name |
return | boolean |
Whether the attribute is safe for massive assignments |
---|
public function isAttributeSafe($attribute)
{
return in_array($attribute, $this->safeAttributes(), true);
}
Defined in: luya\admin\ngrest\base\NgRestModel::isI18n()
Whether a field is i18n or not.
public boolean isI18n ( $attributeName ) | ||
$attributeName | string |
The name of the field which is |
public function isI18n($attributeName)
{
return in_array($attributeName, $this->i18n);
}
Defined in: yii\db\BaseActiveRecord::isPrimaryKey()
Returns a value indicating whether the given set of attributes represents the primary key for this model.
public static boolean isPrimaryKey ( $keys ) | ||
$keys | array |
The set of attributes to check |
return | boolean |
Whether the given set of attributes represents the primary key for this model |
---|
public static function isPrimaryKey($keys)
{
$pks = static::primaryKey();
if (count($keys) === count($pks)) {
return count(array_intersect($keys, $pks)) === count($pks);
}
return false;
}
Defined in: yii\db\BaseActiveRecord::isRelationPopulated()
Check whether the named relation has been populated with records.
See also getRelation().
public boolean isRelationPopulated ( $name ) | ||
$name | string |
The relation name, e.g. |
return | boolean |
Whether relation has been populated with records. |
---|
public function isRelationPopulated($name)
{
return array_key_exists($name, $this->_related);
}
Defined in: yii\db\ActiveRecord::isTransactional()
Returns a value indicating whether the specified operation is transactional in the current $scenario.
public boolean isTransactional ( $operation ) | ||
$operation | integer |
The operation to check. Possible values are OP_INSERT, OP_UPDATE and OP_DELETE. |
return | boolean |
Whether the specified operation is transactional in the current $scenario. |
---|
public function isTransactional($operation)
{
$scenario = $this->getScenario();
$transactions = $this->transactions();
return isset($transactions[$scenario]) && ($transactions[$scenario] & $operation);
}
Defined in: yii\db\BaseActiveRecord::link()
Establishes the relationship between two models.
The relationship is established by setting the foreign key value(s) in one model to be the corresponding primary key value(s) in the other model. The model with the foreign key will be saved into database without performing validation and without events/behaviors.
If the relationship involves a junction table, a new row will be inserted into the junction table which contains the primary key values from both models.
Note that this method requires that the primary key value is not null.
public void link ( $name, $model, $extraColumns = [] ) | ||
$name | string |
The case sensitive name of the relationship, e.g. |
$model | yii\db\ActiveRecordInterface |
The model to be linked with the current one. |
$extraColumns | array |
Additional column values to be saved into the junction table. This parameter is only meaningful for a relationship involving a junction table (i.e., a relation set with yii\db\ActiveRelationTrait::via() or yii\db\ActiveQuery::viaTable().) |
throws | yii\base\InvalidCallException |
if the method is unable to link two models. |
---|
public function link($name, $model, $extraColumns = [])
{
/* @var $relation ActiveQueryInterface|ActiveQuery */
$relation = $this->getRelation($name);
if ($relation->via !== null) {
if ($this->getIsNewRecord() || $model->getIsNewRecord()) {
throw new InvalidCallException('Unable to link models: the models being linked cannot be newly created.');
}
if (is_array($relation->via)) {
/* @var $viaRelation ActiveQuery */
list($viaName, $viaRelation) = $relation->via;
$viaClass = $viaRelation->modelClass;
// unset $viaName so that it can be reloaded to reflect the change
unset($this->_related[$viaName]);
} else {
$viaRelation = $relation->via;
$viaTable = reset($relation->via->from);
}
$columns = [];
foreach ($viaRelation->link as $a => $b) {
$columns[$a] = $this->$b;
}
foreach ($relation->link as $a => $b) {
$columns[$b] = $model->$a;
}
foreach ($extraColumns as $k => $v) {
$columns[$k] = $v;
}
if (is_array($relation->via)) {
/* @var $viaClass ActiveRecordInterface */
/* @var $record ActiveRecordInterface */
$record = Yii::createObject($viaClass);
foreach ($columns as $column => $value) {
$record->$column = $value;
}
$record->insert(false);
} else {
/* @var $viaTable string */
static::getDb()->createCommand()->insert($viaTable, $columns)->execute();
}
} else {
$p1 = $model->isPrimaryKey(array_keys($relation->link));
$p2 = static::isPrimaryKey(array_values($relation->link));
if ($p1 && $p2) {
if ($this->getIsNewRecord()) {
if ($model->getIsNewRecord()) {
throw new InvalidCallException('Unable to link models: at most one model can be newly created.');
}
$this->bindModels(array_flip($relation->link), $this, $model);
} else {
$this->bindModels($relation->link, $model, $this);
}
} elseif ($p1) {
$this->bindModels(array_flip($relation->link), $this, $model);
} elseif ($p2) {
$this->bindModels($relation->link, $model, $this);
} else {
throw new InvalidCallException('Unable to link models: the link defining the relation does not involve any primary key.');
}
}
// update lazily loaded related objects
if (!$relation->multiple) {
$this->_related[$name] = $model;
} elseif (isset($this->_related[$name])) {
if ($relation->indexBy !== null) {
if ($relation->indexBy instanceof \Closure) {
$index = call_user_func($relation->indexBy, $model);
} else {
$index = $model->{$relation->indexBy};
}
$this->_related[$name][$index] = $model;
} else {
$this->_related[$name][] = $model;
}
}
}
Defined in: yii\base\Model::load()
Populates the model with input data.
This method provides a convenient shortcut for:
if (isset($_POST['FormName'])) {
$model->attributes = $_POST['FormName'];
if ($model->save()) {
// handle success
}
}
which, with load()
can be written as:
if ($model->load($_POST) && $model->save()) {
// handle success
}
load()
gets the 'FormName'
from the model's formName() method (which you may override), unless the
$formName
parameter is given. If the form name is empty, load()
populates the model with the whole of $data
,
instead of $data['FormName']
.
Note, that the data being populated is subject to the safety check by setAttributes().
public boolean load ( $data, $formName = null ) | ||
$data | array |
The data array to load, typically |
$formName | string|null |
The form name to use to load the data into the model, empty string when form not use. If not set, formName() is used. |
return | boolean |
Whether |
---|
public function load($data, $formName = null)
{
$scope = $formName === null ? $this->formName() : $formName;
if ($scope === '' && !empty($data)) {
$this->setAttributes($data);
return true;
} elseif (isset($data[$scope])) {
$this->setAttributes($data[$scope]);
return true;
}
return false;
}
Defined in: yii\db\ActiveRecord::loadDefaultValues()
Loads default values from database table schema.
You may call this method to load default values after creating a new instance:
// class Customer extends \yii\db\ActiveRecord
$customer = new Customer();
$customer->loadDefaultValues();
public $this loadDefaultValues ( $skipIfSet = true ) | ||
$skipIfSet | boolean |
Whether existing value should be preserved.
This will only set defaults for attributes that are |
return | $this |
The model instance itself. |
---|
public function loadDefaultValues($skipIfSet = true)
{
$columns = static::getTableSchema()->columns;
foreach ($this->attributes() as $name) {
if (isset($columns[$name])) {
$defaultValue = $columns[$name]->defaultValue;
if ($defaultValue !== null && (!$skipIfSet || $this->getAttribute($name) === null)) {
$this->setAttribute($name, $defaultValue);
}
}
}
return $this;
}
Defined in: yii\base\Model::loadMultiple()
Populates a set of models with the data from end user.
This method is mainly used to collect tabular data input.
The data to be loaded for each model is $data[formName][index]
, where formName
refers to the value of formName(), and index
the index of the model in the $models
array.
If formName() is empty, $data[index]
will be used to populate each model.
The data being populated to each model is subject to the safety check by setAttributes().
public static boolean loadMultiple ( $models, $data, $formName = null ) | ||
$models | array |
The models to be populated. Note that all models should have the same class. |
$data | array |
The data array. This is usually |
$formName | string|null |
The form name to be used for loading the data into the models.
If not set, it will use the formName() value of the first model in |
return | boolean |
Whether at least one of the models is successfully populated. |
---|
public static function loadMultiple($models, $data, $formName = null)
{
if ($formName === null) {
/* @var $first Model|false */
$first = reset($models);
if ($first === false) {
return false;
}
$formName = $first->formName();
}
$success = false;
foreach ($models as $i => $model) {
/* @var $model Model */
if ($formName == '') {
if (!empty($data[$i]) && $model->load($data[$i], '')) {
$success = true;
}
} elseif (!empty($data[$formName][$i]) && $model->load($data[$formName][$i], '')) {
$success = true;
}
}
return $success;
}
Defined in: yii\db\BaseActiveRecord::markAttributeDirty()
Marks an attribute dirty.
This method may be called to force updating a record when calling update(), even if there is no change being made to the record.
public void markAttributeDirty ( $name ) | ||
$name | string |
The attribute name |
public function markAttributeDirty($name)
{
unset($this->_oldAttributes[$name]);
}
Defined in: luya\admin\ngrest\base\NgRestModel::ngRestActiveButtons()
Define Active Buttons.
An array with active button elements:
public function ngRestActiveButton()
{
return [
['class' => 'luya\admin\activebuttons\MyActiveButton', 'property' => 'value'],
];
}
public array ngRestActiveButtons ( ) |
public function ngRestActiveButtons()
{
return [];
}
Defined in: luya\admin\ngrest\base\NgRestModel::ngRestActiveSelections()
Define Active Selections.
Active Selections are buttons which are visible in the CRUD list and can interact with the selected items (through a checkbox).
Active Selections can be either defined inline or as instance of {{luya\admin\ngrest\base\ActiveSelection}}. There are also predefined Selections Available.
public function ngRestActiveSelections()
{
return [
[
'label' => 'Archive Rows',
'action' => function(array $items, \luya\admin\ngrest\base\ActiveSelection $context) {
foreach ($items as $item) {
// do something with item. Each item is an ActiveRecord of the method implementation itself.
}
// if the selection interacts with the items, it might be necessary to reload the CRUD.
$context->sendReloadEvent();
return $context->sendSuccess('Done!');
}
],
[
'class' => 'luya\admin\selections\DeleteActiveSelection'
]
];
}
Keep in mind that
$this
does not result in a certain Active Record context as there is no model assigned whenngRestActiveSelections()
is called.
When generating multiple buttons f.e. from another model its recommend to use array notation, otherwise its possible to create an infinite circular reference.
public function ngRestActiveSelections()
{
$selections = [];
foreach (MyModel::find()->asArray()->all() as $myModel) {
$selections[] = [
'label' => $myModel['title'],
'action' => function(array $items, \luya\admin\ngrest\base\ActiveSelection $context) use ($myModel) {
// accessing $myModel
}
];
}
return $selections;
}
public array ngRestActiveSelections ( ) | ||
return | array |
An array with definitions which eithe requires |
---|
public function ngRestActiveSelections()
{
return [];
}
Define Active Window configurations.
public function ngRestActiveWindows()
{
return [
['class' => 'luya\admin\aws\TagActiveWindow', 'label' => 'Tags Label'],
['class' => luya\admin\aws\ChangePasswordActiveWindow::class, 'label' => 'Change your Password'],
];
}
public void ngRestActiveWindows ( ) |
public function ngRestActiveWindows()
{
return [
['class' => ChangePasswordActiveWindow::class, 'label' => false],
['class' => UserHistorySummaryActiveWindow::class, 'label' => false],
['class' => ApiRequestInsightActiveWindow::class, 'label' => false],
];
}
Defines the Api Endpoint for the current Active Record model.
public static string ngRestApiEndpoint ( ) |
public static function ngRestApiEndpoint()
{
return 'api-admin-user';
}
Defined in: luya\admin\ngrest\base\NgRestModel::ngRestAttributeGroups()
Grouping fields into fieldset similar group names which can be collapsed by default or not:
public function ngRestAttributeGroups()
{
return [
[['timestamp_create', 'timestamp_display_from', 'timestamp_display_until'], 'Timestamps', 'collapsed' => true],
[['image_list', 'file_list'], 'Images', 'collapsed' => false],
];
}
If collapsed is true
then the form group is hidden when opening the form, otherwhise its open by default (which is default value when not provided).
public array ngRestAttributeGroups ( ) | ||
return | array |
An array with groups where offset 1 are the fields, 2 the name of the group |
---|
public function ngRestAttributeGroups()
{
return [];
}
Define the field types for ngrest, to use ngRestConfigDefine()
.
The definition can contain properties, but does not have to.
public function ngRestAttributeTypes()
{
return [
'firstname' => 'text',
'lastname' => 'text',
'description' => 'textarea',
'position' => ['selectArray', [0 => 'Mr', 1 => 'Mrs']],
'image_id' => 'image',
'image_id_2' => ['image'], // is equal to `image_id` field.
'image_id_with_no_filter' => ['image', true],
];
}
public array ngRestAttributeTypes ( ) |
public function ngRestAttributeTypes()
{
return [
'title' => ['selectArray', 'data' => static::getTitles()],
'firstname' => ['text', 'inline' => true],
'lastname' => ['text', 'inline' => true],
'email' => 'text',
'password' => 'password',
'login_attempt_lock_expiration' => 'datetime',
'is_request_logger_enabled' => 'toggleStatus',
];
}
Defined in: luya\admin\ngrest\base\NgRestModel::ngRestByPrimaryKeyOne()
The a single object from a primary key definition.
public static luya\admin\ngrest\base\NgRestActiveQuery ngRestByPrimaryKeyOne ( $condition ) | ||
$condition | string |
The condition for primary keys like |
public static function ngRestByPrimaryKeyOne($condition)
{
return static::ngRestFind()->byPrimaryKey($condition)->one();
}
Defined in: luya\admin\ngrest\base\NgRestModel::ngRestConfig()
Defines the base inline configuration for the current Model.
public void ngRestConfig ( $config ) | ||
$config | luya\admin\ngrest\ConfigBuilder |
ConfigBuilder Object |
public function ngRestConfig($config)
{
foreach ($this->ngRestScopes() as $arrayConfig) {
if (!isset($arrayConfig[0]) && !isset($arrayConfig[1])) {
throw new InvalidConfigException("Invalid ngRestScope definition. Definition must contain an array with two elements: `['create', []]`");
}
$scope = $arrayConfig[0];
$fields = $arrayConfig[1];
if ($scope == 'delete' || (is_array($scope) && in_array('delete', $scope))) {
$config->delete = $fields;
} else {
$this->ngRestConfigDefine($config, $scope, $fields);
}
}
foreach ($this->ngRestActiveWindows() as $windowConfig) {
$config->aw->load($windowConfig);
}
// get the scope based config options if no ngRestConfigOptions() are defined
$configOptions = empty($this->ngRestConfigOptions()) ? $this->getNgRestScopeConfigOptions($config) : $this->ngRestConfigOptions();
if (!empty($configOptions)) {
$config->options = $configOptions;
}
}
Defined in: luya\admin\ngrest\base\NgRestModel::ngRestConfigDefine()
Inject data from the model into the config, usage exmple in ngRestConfig method context:
public function ngRestConfig($config)
{
// ...
$this->ngRestConfigDefine($config, 'list', ['firstname', 'lastname', 'image_id']);
$this->ngRestConfigDefine($config, 'create', ['firstname', 'lastname', 'description', 'position', 'image_id']);
$this->ngRestConfigDefine($config, 'update', ['firstname', 'lastname', 'description', 'position', 'image_id']);
// ....
return $config;
}
You can also use an array definition to handle booth types at the same time
public function ngRestConfig($config)
{
// ...
$this->ngRestConfigDefine($config, ['create', 'update'], ['firstname', 'lastname', 'description', 'position', 'image_id']);
// ....
return $config;
}
public void ngRestConfigDefine ( luya\admin\ngrest\ConfigBuilder $config, $assignedType, array $fields ) | ||
$config | luya\admin\ngrest\ConfigBuilder |
The config which the definition should be append |
$assignedType | string|array |
This can be a string with a type or an array with multiple types |
$fields | array |
An array with fields assign to types type based on the an |
throws | yii\base\InvalidConfigException |
---|
public function ngRestConfigDefine(ConfigBuilder $config, $assignedType, array $fields)
{
$types = $this->ngRestAttributeTypes();
$extraTypes = $this->ngRestExtraAttributeTypes();
$scenarios = $this->scenarios();
$assignedType = (array) $assignedType;
foreach ($assignedType as $type) {
$scenario = false;
$scenarioFields = [];
if ($type == 'create' || $type == 'update') {
$scenario = 'rest'.$type;
if (!isset($scenarios[$scenario])) {
throw new InvalidConfigException("The scenario '$scenario' does not exists in your scenarios list, have you forgot to defined the '$scenario' in the scenarios() method?");
} else {
$scenarioFields = $scenarios[$scenario];
}
}
foreach ($fields as $field) {
if (!isset($types[$field]) && !isset($extraTypes[$field])) {
throw new InvalidConfigException("The ngrest attribue '$field' does not exists in ngRestAttributeTypes() nor in ngRestExtraAttributeTypes() method.");
}
if ($scenario && !in_array($field, $scenarioFields)) {
throw new InvalidConfigException("The field '$field' does not exists in the scenario '$scenario'. You have to define them in the scenarios() method.");
}
if (isset($extraTypes[$field])) {
$typeField = 'extraField';
$definition = $extraTypes[$field];
} else {
$typeField = 'field';
$definition = $types[$field];
}
$args = [];
if (is_array($definition)) {
if (array_key_exists('class', $definition)) {
$method = $definition['class'];
unset($definition['class']);
$args = $definition;
} else {
$method = $config->prepandAdminPlugin($definition[0]);
$args = array_slice($definition, 1);
}
} else {
$method = $config->prepandAdminPlugin($definition);
}
$config->$type->$typeField($field, $this->getAttributeLabel($field))->addPlugin($method, $args);
}
}
}
Defined in: luya\admin\ngrest\base\NgRestModel::ngRestConfigOptions()
The NgRest config has an options property which can contain a variaty of definitions.
- saveCallback: This will trigere an angular callback after save/update of a new/existing record.
Here an example for the predefined option saveCallback:
public function ngRestConfigOptions()
{
return [
'saveCallback' => "['ServiceMenuData', function(ServiceMenuData) { ServiceMenuData.load(true); }]",
];
}
This specific example will reload the menu service from the cms, see the services.js files in the modules to find all possible angular js services.
public array ngRestConfigOptions ( ) | ||
return | array |
Must be an array with an option identifier and value for the given key. |
---|
public function ngRestConfigOptions()
{
return [];
}
Format the values for export generator.
since 4.3 the ngRestExport() takes precendence regarding what attributes can be exported and how they are sorted! This means that when ngRestExport() is used, only the given fields will be available to export and the will be exported in order they are defined in the array.
When exporting data, it might be convient to format certain values, by default the {{luya\components\Formatter}} will be used. Its also possible to provide a closure function to interact with the model. When handling large amount of data to export, this might make problems because it will generate a model for each row. Therefore an empty array response will improve performance because {{ngRestExport()}} will be ignored.
public function ngRestExport()
{
return [
'created_at' => 'datetime',
'comment' => 'ntext',
'category_id' => function($model) {
return $model->category->title;
}
];
}
When using a relation call $model->category->title
it might usefull to eager load this relation, therefore take a look at {{luya\admin\ngrest\base\Api::withRelations()}}.
Therefore the withRelations() can be configured in the api controller of the given NgRest model:
public function withRelations()
{
return [
'export' => ['category'],
];
}
public array ngRestExport ( ) | ||
return | array |
An array where the key is the attribute and value is either the formatter to use or a closure where the first param is the model itself. Only the given attributes will be available in the export and are ordered in the list they are defined in the array. |
---|
public function ngRestExport()
{
return [
'id' => 'text',
'lastname' => 'text',
'firstname' => 'text',
'email' => 'text',
'login_attempt_lock_expiration' => 'datetime',
];
}
Same as ngRestAttributeTypes() but used for extraField instead of field.
public array ngRestExtraAttributeTypes ( ) |
public function ngRestExtraAttributeTypes()
{
return [
'lastloginTimestamp' => ['datetime', 'sortField' => false],
];
}
Define an array with filters you can select from the CRUD list.
return [
'deleted' => self::ngRestFind()->andWhere(['is_deleted' => 0]),
'year2016' => self::ngRestFind()->andWhere(['between', 'date', 2015, 2016]),
];
Keep in mind to use andWhere() otherwise an existing where() condition could be overriden.
public array ngRestFilters ( ) | ||
return | array |
Return an array where key is the name and value is the ngRestFind() condition for the filters. |
---|
public function ngRestFilters()
{
return [
'Removed' => self::find()->where(['is_api_user' => false, 'is_deleted' => true]),
];
}
The NgRestFind is used when performing the crud list index overivew. You can override this method in order to hide data from the ngRestFind command which populates all data from the database.
An example for hidding deleted news posts from the crud list:
public static function ngRestFind()
{
return parent::ngRestFind()->where(['is_deleted' => 0]);
}
This method will taken for all internal NOT API USER related calls. So assuming an API user makes request to the APi it will use find() instead of ngRestFind(). If a logged in user will make a request to an API it will take ngRestFind().
Also this methid is used for the admin scheduler, see {{luya\admin\models\Scheduler::triggerJob()}}.
public static luya\admin\ngrest\base\NgRestActiveQuery ngRestFind ( ) |
public static function ngRestFind()
{
return self::find()->andWhere(['is_api_user' => false]);
}
Defined in: luya\admin\ngrest\base\NgRestModel::ngRestFullQuerySearch()
Search trough the whole table as ajax fallback when pagination is enabled.
This method is used when the angular crud view switches to a pages view and a search term is entered into the query field. By default it will also take the fields from {{genericSearchFields()}}.
When you have relations to lookup you can extend the parent implementation, for example:
public function ngRestFullQuerySearch($query)
{
return parent::ngRestFullQuerySearch($query)
->joinWith(['production'])
->orFilterWhere(['like', 'title', $query]);
}
public yii\db\ActiveQuery ngRestFullQuerySearch ( $query ) | ||
$query | string |
The query which will be used in order to make the like statement request. |
return | yii\db\ActiveQuery |
Returns an ActiveQuery instance in order to send to the ActiveDataProvider. |
---|
public function ngRestFullQuerySearch($query)
{
$find = static::ngRestFind();
$operand = [];
foreach ($this->genericSearchFields() as $column) {
$operand[] = ['like', $column, $query];
}
$find->andWhere(new OrCondition($operand));
return $find;
}
Defined in: luya\admin\ngrest\base\NgRestModel::ngRestGroupByExpanded()
When enabled, the field groups in the form are by default expanded (open) or not (closed).
This has no effect unless {{luya\admin\ngrest\base\NgRestModel::ngRestGroupByField()}} is configured.
public boolean ngRestGroupByExpanded ( ) | ||
return | boolean |
Whether the group field should be expanded or not (default is true). |
---|
public function ngRestGroupByExpanded()
{
return true;
}
Defined in: luya\admin\ngrest\base\NgRestModel::ngRestGroupByField()
Enable the Grouping by a field option by default. Allows you to predefine the default group field.
public function ngRestGroupByField()
{
return 'cat_id';
}
Now by default the fields are grouped by the cat_id field, the admin user can always reset the group by filter to none.
public string ngRestGroupByField ( ) | ||
return | string |
The field of what the default grouping should be, false disables the default grouping (default). |
---|
public function ngRestGroupByField()
{
return false;
}
Define the default ordering for the ngrest list when loading, by default the primary key sorted ascending is used. To override the method for example sorting by a timestamp field:
public function ngRestListOrder()
{
return ['created_at' => SORT_ASC];
}
If the return value is false
the sorting is disabled for this NgRest CRUD.
public array ngRestListOrder ( ) | ||
return | array |
Return an Array where the key is the field and value the direction. Example |
---|
public function ngRestListOrder()
{
return ['firstname' => SORT_ASC];
}
Defined in: luya\admin\ngrest\base\NgRestModel::ngRestPools()
Define data pools.
The difference between ngRestFilters() and ngRestPools() is that the pool identifer must be provided in the menu component and is not visible in the UI, it is like an invisible filter, only available to developers.
A data pool can be used to retrieve only a subset of data. The identifier for the pool is passed trough to all subrelation calls. Related models will filter their data by the same pool identifier, if configured accordingly.
The following is an example of a pool identifier for a table with cars:
return [
'poolAudi' => ['car_brand' => 'Audi'],
'poolBMW' => ['car_brand' => 'BMW'],
];
If the pool identifier is defined in the menu, all subrelation calls will receive the identifer. Thefore, in the above example, you could have a model for car parts that only returns parts with the same pool identifier in relation calls:
return [
'poolAudi' => ['parts_brand' => 'Audi'],
'poolBMW' => ['parts_brand' => 'BMW'],
];
The identifiers poolAudi
and poolBMW
are passed to the parts
table to only return parts for the given car brand.
The pool condition is threaded as where condition, the above example would be
where(['car_brand' => 'BMW'])
. Only hash format expression with "equal" operators are allowed.
public array ngRestPools ( ) |
public function ngRestPools()
{
return [];
}
Defined in: luya\admin\ngrest\base\NgRestModel::ngRestRelations()
Define your relations in order to access the relation data and manage them directly in the same view.
Example of how to use two relation buttons based on models which as to be ngrest model as well with apis!
public function ngRestRelations()
{
return [
['label' => 'The Label', 'targetModel' => Model::class, 'dataProvider' => $this->getSales()],
];
}
The above example will use the getSales()
method of the current model where you are implementing this relation. The getSales()
must return
an {{yii\db\QueryInterface}} Object, for example you can use $this->hasMany(Model, ['key' => 'rel'])
or new \yii\db\Query()
.
You can also define the tabLabelAttribute
key with the name of a field you like the display as tab name. Assuming your table as a column title
you
can set 'tabLabelAttribute' => 'title'
in order to display this value in the tab label.
public array ngRestRelations ( ) |
public function ngRestRelations()
{
return [];
}
Defines the scope which field should be used for what situation.
public function ngRestScopes()
{
return [
['list', ['firstname', 'lastname']],
[['create', 'update'], ['firstname', 'lastname', 'description', 'image_id']],
['delete', true],
]:
}
The create and update scopes can also be written in seperated notation in order to configure different forms for create and update:
public function ngRestScopes()
{
return [
['list', ['firstname', 'lastname']],
['create', ['firstname', 'lastname', 'description', 'image_id']],
['update', ['description']],
];
}
public void ngRestScopes ( ) |
public function ngRestScopes()
{
return [
['list', ['title', 'firstname', 'lastname', 'email', 'lastloginTimestamp']],
['create', ['title', 'firstname', 'lastname', 'email', 'password']],
['update', ['title', 'firstname', 'lastname', 'email', 'login_attempt_lock_expiration']],
['delete', true],
];
}
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\db\BaseActiveRecord::offsetExists()
Returns whether there is an element at the specified offset.
This method is required by the interface ArrayAccess.
public boolean offsetExists ( $offset ) | ||
$offset | mixed |
The offset to check on |
return | boolean |
Whether there is an element at the specified offset. |
---|
#[\ReturnTypeWillChange]
public function offsetExists($offset)
{
return $this->__isset($offset);
}
Defined in: yii\base\Model::offsetGet()
Returns the element at the specified offset.
This method is required by the SPL interface ArrayAccess.
It is implicitly called when you use something like $value = $model[$offset];
.
public mixed offsetGet ( $offset ) | ||
$offset | string |
The offset to retrieve element. |
return | mixed |
The element at the offset, null if no element is found at the offset |
---|
#[\ReturnTypeWillChange]
public function offsetGet($offset)
{
return $this->$offset;
}
Defined in: yii\base\Model::offsetSet()
Sets the element at the specified offset.
This method is required by the SPL interface ArrayAccess.
It is implicitly called when you use something like $model[$offset] = $value;
.
public void offsetSet ( $offset, $value ) | ||
$offset | string |
The offset to set element |
$value | mixed |
The element value |
#[\ReturnTypeWillChange]
public function offsetSet($offset, $value)
{
$this->$offset = $value;
}
Defined in: yii\db\BaseActiveRecord::offsetUnset()
Sets the element value at the specified offset to null.
This method is required by the SPL interface ArrayAccess.
It is implicitly called when you use something like unset($model[$offset])
.
public void offsetUnset ( $offset ) | ||
$offset | mixed |
The offset to unset element |
public function offsetUnset($offset)
{
if (property_exists($this, $offset)) {
$this->$offset = null;
} else {
unset($this->$offset);
}
}
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: yii\base\Model::onUnsafeAttribute()
This method is invoked when an unsafe attribute is being massively assigned.
The default implementation will log a warning message if YII_DEBUG is on. It does nothing otherwise.
public void onUnsafeAttribute ( $name, $value ) | ||
$name | string |
The unsafe attribute name |
$value | mixed |
The attribute value |