documentation update + code fixes

This commit is contained in:
Antonio Ramirez
2017-06-11 23:25:51 +02:00
parent 4dedf111a1
commit 7344ad31df
91 changed files with 1699 additions and 827 deletions

View File

@ -73,3 +73,5 @@ class ProfileController extends Controller
> This is absolutely good way to extend almost any class of the extension. For more information you could
> check `Da\User\Bootstrap` class file to see what you have in your control.
© [2amigos](http://www.2amigos.us/) 2013-2017

View File

@ -0,0 +1,106 @@
Overriding Classes
==================
This module makes extensive use of the Yii2's Dependency Injection Container. The module has a special attribute
named `classMap` where it allows you to override specific classes.
The following are the classes that you can override throughout that attribute:
- Model Classes (AR)
- User
- SocialNetworkAccount
- Profile
- Token
- Assignment
- Permission
- Role
- Search Classes
- UserSearch
- PermissionSearch
- RoleSearch
- Form Classes
- RegistrationForm
- ResendForm
- LoginForm
- SettingsForm
- RecoveryForm
How to Override
---------------
The `classMap` contains an easy to recognize name and their correspondent definition. The default configuration can be
seen at the `Bootstrap` class:
```php
$defaults = [
// --- models
'User' => 'Da\User\Model\User',
'SocialNetworkAccount' => 'Da\User\Model\SocialNetworkAccount',
'Profile' => 'Da\User\Model\Profile',
'Token' => 'Da\User\Model\Token',
'Assignment' => 'Da\User\Model\Assignment',
'Permission' => 'Da\User\Model\Permission',
'Role' => 'Da\User\Model\Role',
// --- search
'UserSearch' => 'Da\User\Search\UserSearch',
'PermissionSearch' => 'Da\User\Search\PermissionSearch',
'RoleSearch' => 'Da\User\Search\RoleSearch',
// --- forms
'RegistrationForm' => 'Da\User\Form\RegistrationForm',
'ResendForm' => 'Da\User\Form\ResendForm',
'LoginForm' => 'Da\User\Form\LoginForm',
'SettingsForm' => 'Da\User\Form\SettingsForm',
'RecoveryForm' => 'Da\User\Form\RecoveryForm',
];
```
As you can see, the only thing we need to do is actually modify its definition. For example, the following configuration
will override the `RegistrationForm` class:
```php
namespace app\forms;
use Da\User\Form\RegistrationForm as BaseForm;
class RegistrationForm extends BaseForm {
/**
* Override from parent
*/
public function rules() {
// your logic
}
}
```
Now, to tell the module to use your class instead, you simply need to update the definition of that class into the
the `Module::classMap` attribute.
```php
\\ ...
'modules' => [
'user' => [
'class' => Da\User\Module::class,
'classMap' => [
'RegistrationForm' => 'app\forms\RegistrationForm'
]
]
]
```
The definition can be any of the following (from Yii2's DI container):
- a **PHP callable**: The callable will be executed when `Container::get()]]` is invoked. The signature of the callable
should be `function ($container, $params, $config)`, where `$params` stands for the list of constructor
parameters, `$config` the object configuration, and `$container` the container object. The return value
of the callable will be returned by `Container::get()]]` as the object instance requested.
- a **configuration array**: the array contains name-value pairs that will be used to initialize the property
values of the newly created object when `Container::get()]]` is called. The `class` element stands for the
the class of the object to be created. If `class` is not specified, `$class` will be used as the class name.
- a **string**: a class name, an interface name or an alias name.
> See [how to enhance a User model](how-to-enhance-a-user-model.md) guide to see a practical example.