xima / xima-typo3-recordlist
Advanced record list with simple workspace integration
Installs: 30
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 6
Forks: 0
Open Issues: 0
Type:typo3-cms-extension
Requires
- php: ^8.0
- typo3/cms-core: >=11.0.0
Requires (Dev)
- bk2k/bootstrap-package: dev-master
- clue/phar-composer: ^1.0
- friendsofphp/php-cs-fixer: ^3.12
- phpstan/extension-installer: ^1.3
- phpstan/phpstan: ^1.6
- roave/security-advisories: dev-master
- saschaegerer/phpstan-typo3: ^1.8
- typo3/cms-base-distribution: ^11.4
This package is auto-updated.
Last update: 2024-11-12 12:58:13 UTC
README
This package allows you to quickly create backend modules for advanced record listing.
Workspaces integration: More simple workflow for requesting and approving changes.
Install
composer require xima/xima-typo3-recordlist
Usage
Start by creating a new backend controller in your TYPO3 extension.
1. Extend new controller from AbstractBackendController
The controller implements the BackendControllerInterface
which requires you to add the
methods getTableName()
and getRecordPid()
:
<?php namespace Vendor\MyExtension\Controller\Backend; use Xima\XimaTypo3Recordlist\Controller\AbstractBackendController; class UserController extends AbstractBackendController { public function getTableName(): string { return 'fe_users'; } public function getRecordPid(): int { return $this->site->getConfiguration()['userPid'] ?? 0; } }
2. Register Backend module
Add a new backend module via
the Backend module API.
You're free to adjust the settings as you like, the only import setting is the routeTarget
: Make sure you always use
the ::mainAction
.
ExtensionManagementUtility::addModule( 'web', 'users', '', '', [ 'routeTarget' => UserController::class . '::mainAction', 'access' => 'user,group', 'name' => 'web_events', 'iconIdentifier' => 'your-module-icon', 'labels' => 'LLL:EXT:your_ext/Resources/Private/Language/locallang_mod.xlf', 'inheritNavigationComponentFromMainModule' => false, ] );
That's it.
Customization
Template
To use a custom template, override the TEMPLATE_NAME
constant in your controller and configure the template paths via
TypoScript constants:
module.tx_ximatypo3recordlist {
view {
partialRootPaths = EXT:your_ext/Resources/Private/Backend/Partials
templateRootPath = EXT:your_ext/Resources/Private/Backend/Templates
layoutRootPath = EXT:your_ext/Resources/Private/Backend/Layouts
}
}
Data
Each record item can be modified using the modifyRecord
method:
class UserController extends AbstractBackendController { public function modifyRecord(array &$record): void { $record['fullName'] = $record['first_name'] . ' ' . $record['last_name']; } }
Add new filter options
class UserController extends AbstractBackendController { public function addAdditionalConstraints(): array { $constraints = []; $body = $this->request->getParsedBody(); $qb = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('fe_users'); // Set default value + check POST override $registerDate = new DateTime(); if (isset($body['register_date']) && $body['register_date']) { $registerDate = new DateTime($body['register_date']); } // Add value for form element to template $this->view->assign('register_date', $registerDate); // Add default condition $constraints[] = $qb->expr()->gte('register_date', $registerDate->getTimestamp()); return $constraints; } }