1

TCAにslugフィールドがあり、一般的には機能します。Backend > List モジュールを介して追加すると、値を入力しなくても、uniqueeval によってスラッグが一意になることが保証されるため、同じ名前で多くの行を作成するときにFoo TYPO3 バックエンドはfoofoo-1foo-2、 などの固有のスラッグに解決されることを保証します。

'slug'       => [
    'exclude'     => true,
    'label'       => 'Slug',
    'displayCond' => 'VERSION:IS:false',
    'config'      => [
        'type'              => 'slug',
        'generatorOptions'  => [
            'fields'         => ['name'],
            'fieldSeparator' => '/',
            'replacements'   => [
                '/' => '',
            ],
        ],
        'fallbackCharacter' => '-',
        'eval'              => 'unique',
        'default'           => '',
        'appearance'        => [
            'prefix' => \BIESIOR\Garage\UserFunctions\SlugPrefix::class . '->getPrefix'
        ],
    ],
],

newただし、 /アクション内のフォームから新しいオブジェクトを作成する場合create(ご覧のとおり、extension_builder からの典型的な Extbase CRUD) のように:

public function createAction(Car $newCar)
{
    $this->addFlashMessage(
        'The object was created. Please be aware that this action is publicly accessible unless you implement an access check. See https://docs.typo3.org/typo3cms/extensions/extension_builder/User/Index.html', 
        '', 
        \TYPO3\CMS\Core\Messaging\AbstractMessage::WARNING);
    $this->carRepository->add($newCar);
    $this->redirect('list');
}

もちろんスラッグは音符セットです。

私の最初のアイデアは、 TCA type='slug'のロジックを複製し、この機能を独自の JS、AJAX、および PHP に追加することですが、それは過負荷と時間の消費のように聞こえます。特に、スラッグの部分はユーザーに一切気にしてほしくないということです。代わりにカスタムアクションで使用できる、特定のテーブルの一意のスラッグを検索するための簡単な API はありますか?

この質問は JS で処理する方法に関するものではなく、単なる概念であることに注意してください。FE ユーザーの場合は、この部分をスキップしたいと思います。スラッグが何であるかを知る必要はありません。foo-123新しいオブジェクトを作成するときに、代わりに一意の値を取得したい。

4

3 に答える 3