infabo/typo3api

Installs: 1 711

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 2

Forks: 6

Open Issues: 2

Type:typo3-cms-extension

4.0.0-rc.7 2023-09-18 14:28 UTC

README

Build Status Latest Stable Version Total Downloads Monthly Downloads License

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