nemo64 / typo3api
Installs: 13 476
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 4
Forks: 6
Open Issues: 20
Type:typo3-cms-extension
Requires
- php: ^8.0
- ext-intl: *
- symfony/intl: ^5 || ^6
- symfony/options-resolver: ^5 || ^6 || ^7
- symfony/polyfill-mbstring: ^1
- symfony/polyfill-php80: ^1.23.0
- typo3/cms-backend: ^11.5 || ^12.4
- typo3/cms-core: ^11.5 || ^12.4
- typo3/cms-extbase: ^11.5 || ^12.4
- typo3/cms-frontend: ^11.5 || ^12.4
- typo3/cms-install: ^11.5 || ^12.4
- typo3/cms-lang: ^11.5 || ^12.4
Requires (Dev)
- friendsoftypo3/phpstan-typo3: ^0.9.0
- ssch/typo3-rector: ^v1.3.6
- symplify/easy-coding-standard: ^12.0.7
- typo3/testing-framework: ^8.0.4
This package is auto-updated.
Last update: 2024-09-08 09:26:16 UTC
README
API for easier TYPO3 TCA handling
This extension abstracts some of the array configuration necessary to get things done in TYPO3. This will result in faster, easier and less annoying workflows.
how to install
Use composer require infabo/typo3api
to install this extension. For anyone not using composer: make your project use composer first. Seriously, this extension is to ease your workflow but if you are still using the none-composer mode you have bigger workflow problems.
how to use
Replace your TCA array with the Typo3Api\Builder\TableBuilder
.
TableBuilder
Create the TCA file in your extension like Configuration/TCA/tx_ext_person.php
.
Then, instead of returning the TCA array, you can use the TableBuilder.
\Typo3Api\Builder\TableBuilder::create('tx_ext_person') ->configure(new \Typo3Api\Tca\LanguageConfiguration()) ->configure(new \Typo3Api\Tca\EnableColumnsConfiguration()) ->configure(new \Typo3Api\Tca\SortingConfiguration()) // configure cache clearing so you don't need to provide cache clear capabilities to your backend users ->configure(new \Typo3Api\Tca\CacheTagConfiguration('tx_ext_person_###UID###')) ->configure(new \Typo3Api\Tca\CacheTagConfiguration('tx_ext_person')) // the actual fields ->configure(new \Typo3Api\Tca\Field\InputField('first_name', ['required' => true, 'localize' => false])) ->configure(new \Typo3Api\Tca\Field\InputField('last_name', ['required' => true, 'localize' => false])) ->configure(new \Typo3Api\Tca\Field\DateField('birthday')) ->configure(new \Typo3Api\Tca\Field\EmailField('email')) ->configure(new \Typo3Api\Tca\Field\ImageField('image', ['cropVariants' => ['default' => ['1:1']]])) // easily allow multiple phone numbers ->configure(new \Typo3Api\Tca\Field\InlineRelationField('phone_numbers', [ 'foreign_table' => \Typo3Api\Builder\TableBuilder::create('tx_ext_person_phone') ->configure(new \Typo3Api\Tca\SortingConfiguration()) ->configure(new \Typo3Api\Tca\Field\SelectField('type', ['values' => ['business', 'private', 'other']])) ->configure(new \Typo3Api\Tca\Field\PhoneField('value')) ])) // use or create complex configurations and reuse them across tables ->configure(new \Typo3Api\Tca\Util\Address('Address')) // create new tabs (aka --div--) on the fly ->configureInTab('Notice', new \Typo3Api\Tca\Field\TextareaField('notice')) ;
That is all. You can now start using the tx_ext_person table.
ContentElement
To Create a content element, use the TableBuilder inside Configuration/TCA/Override/tt_content.php
.
\Typo3Api\Builder\TableBuilder::create('tt_content', 'carousel') ->configure(new \Typo3Api\Tca\ContentElementConfiguration()) // add more fields as you like ;
Or with more options.
\Typo3Api\Builder\TableBuilder::create('tt_content', 'quote') ->configure(new \Typo3Api\Tca\ContentElementConfiguration([ 'name' => 'Quote element', 'description' => 'Tell what other peaple are saying', 'icon' => 'content-quote', 'headline' => 'hidden', // adds only the headline field ])) ;
run the unit tests
run vendor/bin/phpunit