Extendability
Use your own flavor of fields
Since version 8.8.0 its easier then ever to user your own fields. Just add your partial folder via typoscript and register your own field configuration. After that you need to tell the user ts config that the new type is available to be selected in the plugin too.
plugin.tx_sfregister.view.partialRootPaths.50 = EXT:your_extension/Resources/Private/Partials/
plugin.tx_sfregister.settings.fields.configuration {
your_field_key {
partial = YourFieldKey
backendLabel = LLL:EXT:your_extension/Resources/Private/Language/locallang_be.xlf:your_field_key
}
}
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addUserTSConfig(
'@import \'EXT:sf_register/Configuration/TypoScript/Fields.typoscript\''
);
@import 'EXT:sf_register/Configuration/TypoScript/Fields.typoscript'
By using the same fields file both in typoscript as well as in user ts config. No additional configuration is needed.
In your partials there are the following information available
{user}
the user object with previous entered values{field
the name of the field in the user objectName} {options}
every value that is inside of the field config {partial, backendLabel, etc}{settings}
the general plugin settings
Adding custom properties
Since late the frontend user domain model can be extended. This can be done the extension evoweb/extender which sole purpose is to extend extbase domain models. There is an example on how to use the extender.
If you run into problems extending please be aware that the only solution supported is by the use of 'extender'.
In this example its noteworthy that the last array key is not required but advised. The path to the file matches extension key and extbase compatible path to the domain model.
For highlighting purpose its advised to let the domain model extend
from \Evoweb\
$GLOBALS['TYPO3_CONF_VARS']['EXTENSIONS']['sf_register']['extender'][
\Evoweb\SfRegister\Domain\Model\FrontendUser::class
]['site-package'] = 'EXT:site_package/Classes/Domain/Model/FrontendUser.php';
Beside extending the domain model with property and get-/set-method a field needs to be created for sql and registered in TCA.
#
# Table structure for table 'fe_users'
#
CREATE TABLE fe_users (
extending varchar(60) DEFAULT ''
);
$temporaryColumns = [
'extending' => [
'exclude' => 1,
'label' => 'extending',
'config' => [
'type' => 'input',
'readOnly' => TRUE,
],
],
];
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns('fe_users', $temporaryColumns, 1);
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes('fe_users', 'extending');
Bring in your own captcha
By implementing a adapter which is extending the
\Evoweb\
you are able to add
an own captcha. The adapter now then has to be configured to be usable by adding
typoscript settings like the following taken from recaptcha:
plugin.tx_sfregister.settings {
# register recaptcha as captcha possibility
captcha.recaptcha = Evoweb\Recaptcha\Adapter\SfRegisterAdapter
fields {
configuration {
# change captcha field type to recaptcha
captcha.type = Recaptcha
}
}
validation.create {
# tell validation to use recaptcha adapter
captcha = Evoweb\SfRegister\Validation\Validator\CaptchaValidator(type = recaptcha)
}
}
PSR-14 Events
This kind of event is superseding Hooks and Signal-Slots in TYPO3 and are the way to go. That's why all signals are replaced with their event counterparts.
How to implement a slot
An overview on how to configure and interact with events was given on the Developer Days in 2019. The detailed example shows how to configure them in the Services.yaml:
use Evoweb\SfRegister\Controller\Event\ProcessInitializeActionEvent;
use TYPO3\CMS\Core\Attribute\AsEventListener;
class YourEventListener
{
#[AsEventListener('your-extension-identifier', ProcessInitializeActionEvent::class)]
public function __invoke(ProcessInitializeActionEvent $event): void
{
}
}
The code above shows how to get an event listener is registered to an event.
Available events
FeuserController
Evoweb\SfRegister\Controller\Event\InitializeActionEvent
-
- $controller
\Evoweb\
Sf Register\ Controller\ Feuser Controller - $settings
array
- $response
\Psr\
Http\ Message\ Response Interface
FeuserCreateController
Evoweb\SfRegister\Controller\Event\CreateFormEvent
-
- $user
\Evoweb\
Sf Register\ Domain\ Model\ Frontend User - $settings
array
Evoweb\SfRegister\Controller\Event\CreatePreviewEvent
-
- $user
\Evoweb\
Sf Register\ Domain\ Model\ Frontend User - $settings
array
Evoweb\SfRegister\Controller\Event\CreateSaveEvent
-
- $user
\Evoweb\
Sf Register\ Domain\ Model\ Frontend User - $settings
array
Evoweb\SfRegister\Controller\Event\CreateConfirmEvent
-
- $user
\Evoweb\
Sf Register\ Domain\ Model\ Frontend User - $settings
array
Evoweb\SfRegister\Controller\Event\CreateRefuseEvent
-
- $user
\Evoweb\
Sf Register\ Domain\ Model\ Frontend User - $settings
array
Evoweb\SfRegister\Controller\Event\CreateAcceptEvent
-
- $user
\Evoweb\
Sf Register\ Domain\ Model\ Frontend User - $settings
array
Evoweb\SfRegister\Controller\Event\CreateDeclineEvent
-
- $user
\Evoweb\
Sf Register\ Domain\ Model\ Frontend User - $settings
array
FeuserDeleteController
Evoweb\SfRegister\Controller\Event\DeleteFormEvent
-
- $user
\Evoweb\
Sf Register\ Domain\ Model\ Frontend User - $settings
array
Evoweb\SfRegister\Controller\Event\DeleteSaveEvent
-
- $user
\Evoweb\
Sf Register\ Domain\ Model\ Frontend User - $settings
array
Evoweb\SfRegister\Controller\Event\DeleteConfirmEvent
-
- $user
\Evoweb\
Sf Register\ Domain\ Model\ Frontend User - $settings
array
FeuserEditController
Evoweb\SfRegister\Controller\Event\EditFormEvent
-
- $user
\Evoweb\
Sf Register\ Domain\ Model\ Frontend User - $settings
array
Evoweb\SfRegister\Controller\Event\EditPreviewEvent
-
- $user
\Evoweb\
Sf Register\ Domain\ Model\ Frontend User - $settings
array
Evoweb\SfRegister\Controller\Event\EditSaveEvent
-
- $user
\Evoweb\
Sf Register\ Domain\ Model\ Frontend User - $settings
array
Evoweb\SfRegister\Controller\Event\EditConfirmEvent
-
- $user
\Evoweb\
Sf Register\ Domain\ Model\ Frontend User - $settings
array
Evoweb\SfRegister\Controller\Event\EditAcceptEvent
-
- $user
\Evoweb\
Sf Register\ Domain\ Model\ Frontend User - $settings
array
FeuserInviteController
Evoweb\SfRegister\Controller\Event\InviteFormEvent
-
- $user
\Evoweb\
Sf Register\ Domain\ Model\ Frontend User - $settings
array
Evoweb\SfRegister\Controller\Event\InviteInviteEvent
-
- $user
\Evoweb\
Sf Register\ Domain\ Model\ Frontend User - $settings
array
FeuserPasswordController
Evoweb\SfRegister\Controller\Event\PasswordFormEvent
-
- $password
\Evoweb\
Sf Register\ Domain\ Model\ Password - $settings
array
Evoweb\SfRegister\Controller\Event\PasswordSaveEvent
-
- $user
\Evoweb\
Sf Register\ Domain\ Model\ Frontend User - $settings
array
FeuserResendController
Evoweb\SfRegister\Controller\Event\ResendFormEvent
-
\Evoweb\
Sf Register\ Domain\ Model\ Email - $settings
array
Evoweb\SfRegister\Controller\Event\ResendMailEvent
-
\Evoweb\
Sf Register\ Domain\ Model\ Email - $settings
array
Evoweb\SfRegister\Services\Event\NotifyAdminCreateAcceptEvent
-
- $user
\Evoweb\
Sf Register\ Domain\ Model\ Frontend User - $settings
array
Evoweb\SfRegister\Services\Event\NotifyAdminCreateConfirmEvent
-
- $user
\Evoweb\
Sf Register\ Domain\ Model\ Frontend User - $settings
array
Evoweb\SfRegister\Services\Event\NotifyAdminCreateDeclineEvent
-
- $user
\Evoweb\
Sf Register\ Domain\ Model\ Frontend User - $settings
array
Evoweb\SfRegister\Services\Event\NotifyAdminCreateRefuseEvent
-
- $user
\Evoweb\
Sf Register\ Domain\ Model\ Frontend User - $settings
array
Evoweb\SfRegister\Services\Event\NotifyAdminCreateSaveEvent
-
- $user
\Evoweb\
Sf Register\ Domain\ Model\ Frontend User - $settings
array
Evoweb\SfRegister\Services\Event\NotifyAdminDeleteConfirmEvent
-
- $user
\Evoweb\
Sf Register\ Domain\ Model\ Frontend User - $settings
array
Evoweb\SfRegister\Services\Event\NotifyAdminDeleteSaveEvent
-
- $user
\Evoweb\
Sf Register\ Domain\ Model\ Frontend User - $settings
array
Evoweb\SfRegister\Services\Event\NotifyAdminEditAcceptEvent
-
- $user
\Evoweb\
Sf Register\ Domain\ Model\ Frontend User - $settings
array
Evoweb\SfRegister\Services\Event\NotifyAdminEditConfirmEvent
-
- $user
\Evoweb\
Sf Register\ Domain\ Model\ Frontend User - $settings
array
Evoweb\SfRegister\Services\Event\NotifyAdminEditSaveEvent
-
- $user
\Evoweb\
Sf Register\ Domain\ Model\ Frontend User - $settings
array
Evoweb\SfRegister\Services\Event\NotifyAdminInviteInviteEvent
-
- $user
\Evoweb\
Sf Register\ Domain\ Model\ Frontend User - $settings
array
Evoweb\SfRegister\Services\Event\NotifyAdminResendMailEvent
-
- $user
\Evoweb\
Sf Register\ Domain\ Model\ Frontend User - $settings
array
Evoweb\SfRegister\Services\Event\NotifyUserCreateAcceptEvent
-
- $user
\Evoweb\
Sf Register\ Domain\ Model\ Frontend User - $settings
array
Evoweb\SfRegister\Services\Event\NotifyUserCreateConfirmEvent
-
- $user
\Evoweb\
Sf Register\ Domain\ Model\ Frontend User - $settings
array
Evoweb\SfRegister\Services\Event\NotifyUserCreateDeclineEvent
-
- $user
\Evoweb\
Sf Register\ Domain\ Model\ Frontend User - $settings
array
Evoweb\SfRegister\Services\Event\NotifyUserCreateRefuseEvent
-
- $user
\Evoweb\
Sf Register\ Domain\ Model\ Frontend User - $settings
array
Evoweb\SfRegister\Services\Event\NotifyUserCreateSaveEvent
-
- $user
\Evoweb\
Sf Register\ Domain\ Model\ Frontend User - $settings
array
Evoweb\SfRegister\Services\Event\NotifyUserDeleteConfirmEvent
-
- $user
\Evoweb\
Sf Register\ Domain\ Model\ Frontend User - $settings
array
Evoweb\SfRegister\Services\Event\NotifyUserDeleteSaveEvent
-
- $user
\Evoweb\
Sf Register\ Domain\ Model\ Frontend User - $settings
array
Evoweb\SfRegister\Services\Event\NotifyUserEditAcceptEvent
-
- $user
\Evoweb\
Sf Register\ Domain\ Model\ Frontend User - $settings
array
Evoweb\SfRegister\Services\Event\NotifyUserEditConfirmEvent
-
- $user
\Evoweb\
Sf Register\ Domain\ Model\ Frontend User - $settings
array
Evoweb\SfRegister\Services\Event\NotifyUserEditSaveEvent
-
- $user
\Evoweb\
Sf Register\ Domain\ Model\ Frontend User - $settings
array
Evoweb\SfRegister\Services\Event\NotifyUserInviteInviteEvent
-
- $user
\Evoweb\
Sf Register\ Domain\ Model\ Frontend User - $settings
array
Evoweb\SfRegister\Services\Event\NotifyUserResendMailEvent
-
- $user
\Evoweb\
Sf Register\ Domain\ Model\ Frontend User - $settings
array
Evoweb\SfRegister\Services\Event\InvitationToRegisterEvent
-
- $user
\Evoweb\
Sf Register\ Domain\ Model\ Frontend User - $settings
array
Evoweb\SfRegister\Services\Event\PreSubmitMailEvent
-
\TYPO3\
CMS\ Core\ Mail\ Mail Message - $settings
array
- $arguments
array