Wie kann ich das Titelfeld im Knotenbearbeitungsformular ausblenden oder deaktivieren?
Wenn ich dies über den Inhaltstyp Registerkarte "Formularanzeige verwalten" ( admin/structure/types/manage/CONTENT_TYPE_MACHINE_NAME/form-display
) tue, werden im Protokoll einige Integritätsbeschränkungsfehler angezeigt .
Daher möchte ich das Standardtitelfeld nicht im Knotenbearbeitungsformular anzeigen. Wenn ich das Titelfeld normalerweise wie andere Felder verstecke. Nach der Knotenerstellung wurde ein weißer Bildschirm angezeigt. Und log sagt, dass das Titelfeld nicht null sein kann ... und so weiter ...
Node::setTitle
?Antworten:
Sie können mit hook_form_alter () Funktion zu verändern , jede Form (einschließlich Knoten bearbeiten Form) und deaktivieren Titel Feld. Überprüfen Sie den folgenden Beispielcode:
Wenn Sie nur ein Formular ändern, können Sie die Funktion hook_form_FORM_ID_alter () überprüfen und FORM_ID mit node_ [CONTENT_TYPE] _edit_form ändern, wobei CONTENT_TYPE Ihr Knotentypformular ist.
BEARBEITEN:
Um den Knotentitel automatisch festzulegen, ohne dass der Benutzer das Titelfeld sehen kann, können Sie das automatische Entitätsbeschriftungsmodul verwenden . Das Modul ist in der Dev-Version für D8, aber wir können es ausprobieren, wenn es richtig funktioniert.
Wenn Sie das Modul " Automatische Entitätsbezeichnung" nicht verwenden möchten , können Sie dies mit benutzerdefiniertem Code versuchen. Überprüfen Sie den Beispielcode hier
quelle
Drupal\Core\Entity\EntityStorageException: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'title' cannot be null: INSERT INTO {node_field_data}
tl; dr: Geben Sie einen Standardtitel an und erlauben Sie dem Benutzer nicht, ihn zu ändern.
Der Änderungsdatensatz D7 → D8 lautet :
Nachdem ich das gelesen hatte, versuchte ich es auf verschiedene Arten. Nur der letzte funktioniert, daher sollte diese Antwort als Warnung dienen, was nicht zu versuchen ist:
Bearbeiten Sie die Konfiguration entity_form_display
Wenn es sich um Ihr eigenes Modul handelt, bearbeiten Sie
core.entity_form_display.node.my_content_type.default.yml
dentitle
Schlüssel und entfernen Sie ihn auscontent
. Dies funktioniert für Felder, aber wenn ich den Titel oder andere Standardelemente wie Heraufstufen, Erstellen usw. entferne, werden sie weiterhin im Formular unter angezeigt/node/add/my_content_type
.Ändern Sie die Anzeige entity_form_display im Code
Fügen Sie diesen Code hinzu zu
my_module_install
:Dies funktioniert visuell, es gibt jedoch drei Probleme mit dieser Lösung: - Es verursacht immer noch die Integritätsbeschränkungsfehler, auf die Sie verweisen. - Es bewirkt, dass die Konfiguration in der Datenbank die Konfiguration in der Datei bei der Installation überschreibt, was meiner Meinung nach eine schlechte Idee ist, IMHO. -
entity_get_form_display
ist veraltetBlenden Sie es in der Konfiguration entity_form_display aus
Verstecke es, aber entferne es nicht. In
core.entity_form_display.node.my_content_type.default.yml
:Durch Versuch und Irrtum fand ich, dass die Logik hier umgekehrt wurde. Auch dies verursacht die Integritätsbeschränkungsfehler, auf die Sie verweisen.
Verstecke es mit CSS
Ich habe es versucht, und es scheint, dass leere Zeichenfolgen für den Titel ebenfalls nicht zulässig sind. Sie müssen also entweder Ihren eigenen Entitätstyp erstellen, der den größten Teil des Codes aus dem Kernknotenmodul neu implementiert, oder ...
Die einzige funktionierende Lösung, die ich finden konnte
Geben Sie einen Standardtitel an und erlauben Sie dem Benutzer nicht, ihn zu ändern.
Sie können
none
zumy_module
einem Zeitstempel oder Ihrer Lieblingsmarke für Erdnussbutter wechseln .quelle
So löse ich dieses Problem in einem Projekt. Derzeit verfügt Automatic Entity Label nicht über eine Drupal 8-Version. Wenn Sie den Code sehen , finden Sie nur eine info.yml-Datei.
Sie müssen immer den Titel festlegen, also legen Sie bei der Erstellung der Entität den Titel fest.
Und der andere Teil ist, den Titel im Knotenformular auszublenden. Dazu können Sie Folgendes verwenden:
Und in diesem Hook versteckst du den Titel, damit machst du den Trick
quelle
Sie können auch das automatische Knotentitelmodul verwenden. Auf diese Weise können Sie den Knotentitel in der Konfiguration des Inhaltstyps auf den gewünschten Wert festlegen, das Feld wird jedoch beim Hinzufügen oder Bearbeiten nicht angezeigt.
quelle
Ich fand den Titel im Layout-Generator in vielerlei Hinsicht nützlich: - Inhaltsvorschau anzeigen - Als Block-ID verwenden
Meine Lösung generiert automatische Titel, indem sie den Blocktyp-Titel verwendet und die Anzahl der Blöcke desselben Typs zählt.
quelle