TCAにslug
フィールドがあり、一般的には機能します。Backend > List モジュールを介して追加すると、値を入力しなくても、unique
eval によってスラッグが一意になることが保証されるため、同じ名前で多くの行を作成するときにFoo TYPO3 バックエンドはfoo
、foo-1
、foo-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
新しいオブジェクトを作成するときに、代わりに一意の値を取得したい。