it-swarm.com.de

Knotenbearbeitungslink generieren

Ich versuche, einen Knotenbearbeitungslink dynamisch zu generieren. Ich verstehe, dass ich es manuell mit erstellen kann

$ editpath = '/node/'.$nid.'/edit';

aber ich habe mehrere Websites, die Unterordner wie verwenden

/ site1_subfolder/node/123/edit

und

/ site2_subfolder/node/123/edit

Ich habe mir die Knotenklasse angesehen und konnte keine Methode finden, die diesen Link für mich generieren würde. Ich habe gesehen, dass es eine NodeForm-Klasse gibt, aber ich habe keine statischen Methoden gesehen, die ich nutzen könnte.

Gibt es bei einem Knoten oder einer Knoten-ID eine Möglichkeit, einen Administrator-Bearbeitungslink zu seinem Bearbeitungsformular zu generieren?

HINWEIS: Wenn dies nicht möglich ist, kann ich eine Funktion zum Abrufen der Unterordnernamen verwenden, damit ich $ editpath = '/'.$subfolder_name.'/node/'.$nid.'/edit' ausführen kann.

Aber ich bin mir auch nicht sicher, wie ich das machen soll.

UPDATE: Ich nehme an, ich könnte einen $ node-> toUrl () -> toString () ausführen, um den direkten Pfad abzurufen und am Ende edit hinzuzufügen, aber dies würde mir nur den Alias ​​geben, gibt es eine Möglichkeit, den Alias ​​nicht abzurufen dies und erhalten Sie stattdessen die direkte Verbindung zum Knoten?

6
Matt

Gibt es bei einem Knoten oder einer Knoten-ID eine Möglichkeit, einen Administrator-Bearbeitungslink zu seinem Bearbeitungsformular zu generieren?

Absolut, die Url Klasse hat eine fromRoute Methode:

$url = Url::fromRoute('entity.node.edit_form', ['node' => $nid]);
$link = Link::fromTextAndUrl('edit', $url);
$build = [
  ...
  'link' => $link->toRenderable(),
];
7
Clive

Gibt es bei einem Knoten oder einer Knoten-ID eine Möglichkeit, einen Administrator-Bearbeitungslink zu seinem Bearbeitungsformular zu generieren?

Wenn Sie den $node Selbst haben, können Sie die Methode toUrl() verwenden, um einen der definierten Links zu erhalten:

$url = $node->toUrl('edit-form');
$link = Link::fromTextAndUrl('Title', $url);
$build = [
  //...
  'link' => $link->toRenderable(),
];

Die verschiedenen Linknamen für die Entität befinden sich in der Anmerkung für Knotenklasse :

/**
 * Defines the node entity class.
 *
 * @ContentEntityType(
 *   id = "node",
 *   ...
 *   links = {
 *     "canonical" = "/node/{node}",
 *     "delete-form" = "/node/{node}/delete",
 *     "delete-multiple-form" = "/admin/content/node/delete",
 *     "edit-form" = "/node/{node}/edit",
 *     "version-history" = "/node/{node}/revisions",
 *     "revision" = "/node/{node}/revisions/{node_revision}/view",
 *     "create" = "/node",
 *   }
 * )
 */
4
mpdonadio