Wie binde ich ein Knotenerstellungsformular in eine Ansicht ein?

7

Ich habe eine Ansicht mit einigen Feldern und ein paar Linkelementen.

Wenn ich auf die Linkelemente klicke, sollte in der Ansicht ein Knotenerstellungsformular angezeigt werden, das dem Link zugeordnet ist (auf AJAX-Weise).

Die Lösung, die ich mir vorstellen kann, besteht darin, die Formulare in die Ansicht einzubetten, aber keine Ahnung, wie das geht?

Was ist der beste Weg, um dies umzusetzen?

kmdhrm
quelle
@ Bala: Ich benutze Drupal 7 :(
kmdhrm
1
Überprüfen Sie dies kahthong.com/2012/01/embed-drupal-node-form-anywhere : Mit Hilfe des View- PHP-Moduls können Sie diese Zeile im PHP-Feld "print drupal_render (node_add ('NODE_TYPE'));"
Bala

Antworten:

5

Hoffe das wird dir helfen,

In Drupal 7 können Sie die folgenden Schritte ausführen

  • Sie können ein Formular zur Knotenerstellung in eine ANSICHT einbetten

    • Entweder im VIEW-Header oder Sie können eine neue VIEW erstellen und an Ihre VIEW anhängen
  • In diesem Beispiel binde ich in Views Header ein . Das Einbetten in den Views-Header ist die bessere Option. Klicken Sie hier, um den Header "Ansichten" hinzuzufügen

    Geben Sie hier die Bildbeschreibung ein

  • Wählen Sie Global: Textbereich

    Geben Sie hier die Bildbeschreibung ein

  • Fügen Sie den PHP-Code hinzu und vergessen Sie nicht, das Textformat in PHP zu ändern

    Geben Sie hier die Bildbeschreibung ein

  • PHP-Code

    <?php 
        module_load_include('inc', 'node', 'node.pages');
        $node_form = node_add('node_type');
        print drupal_render($node_form);
    ?>

Hinweis :

  • Vergessen Sie nicht, node_type im PHP-Code zu ersetzen .

  • Verwenden Sie hook_form_alter für die Umleitung von Knotenformularen , da das Formular nach der Knotenerstellung zur Knotendetailseite umleitet. Wenn Sie zu Ihrer Seite umleiten möchten, verwenden Sie die $form_state['redirect'] = 'mycustompage'; Referenz

  • Aktivieren Sie das PHP-Filtermodul mit admin / modules

Geben Sie hier die Bildbeschreibung ein

  • Legen Sie die Berechtigungen für dieses Modul fest, indem Sie "Administrator" für die Ausführung von PHP-Code wie folgt aktivieren :

Geben Sie hier die Bildbeschreibung ein

Wenn jemand eine bessere Lösung hat, teilen Sie diese bitte mit.

inizio
quelle
Würden Sie bitte "Hook_form_alter für die Umleitung von Knotenformularen verwenden" erweitern?
KyleM
Wenn Sie angeben könnten, dass Benutzer das Modul "PHP-Filter" aktivieren und unter den Berechtigungen für "PHP-Code ausführen" "Administrator" auswählen müssen. Vielen Dank für Ihre Lösung!
KyleM
1
Vielen Dank für Ihre Vorschläge, das weiß ich zu schätzen. Ich habe einige Kommentare verpasst. Ich habe meine Antwort aktualisiert.
Inizio
Ihr Willkommen genießen :)
inizio
Diese Lösung wird ohne Bestehen bestimmter Routinen gerendert und implementiert auch ein Sicherheitsproblem. Zum Beispiel funktioniert das Vereinfachungsmodul nicht, um Elemente aus dem Formular zu entfernen, und Sie können Formulare aus diesem Inhaltstyp nicht auf die Weise "Ansichten" -Felder "erstellen". Sie implementieren das Knotenformular eher "wie es ist" aus dem Kern, was in den meisten Fällen nutzlos ist, da dieses Formular zu überladen ist, um in einem Block (Seitenleiste usw.) implementiert zu werden. Das Hinzufügen von PHP-Code über die Administrator-Benutzeroberfläche sollte bei größeren Projekten mit Sicherheitsbedenken vermieden werden.
Nilsun
1

Wenn Sie gerne mit benutzerdefiniertem Code spielen, wurde bei StackOverflow eine ähnliche Frage gestellt, und es gab einige ziemlich umfangreiche Lösungen zum Einbetten von Formularen in eine Ansicht. Alles, was Sie tun müssten, ist, die form_id des für Ihren Typ spezifischen Knotenerstellungsformulars zu verwenden und es in eine der hier auf Ihrer Site veröffentlichten Lösungen zu platzieren .

KyleM
quelle
1

Schauen Sie sich dazu das Inline-Entitätsformular an. Der Commerce Kickstart verwendet dies als Teil des Rezepts für die Verwaltung von Produkten und Produktvarianten. Ich bin mir sicher, dass mehr dahinter steckt, als ich mich im Moment erinnern kann, aber wenn dies vielversprechend aussieht, werde ich zurückkehren und diese Antwort verbessern (oder vielleicht helfen andere, diese Antwort zu verbessern).

Ein mögliches alternatives (oder kostenloses?) Modul könnte Entity Views Attach sein , das meiner Meinung nach auch im Commerce-Kickstart eingesetzt wird.

Emjayess
quelle
Ich bin mir nicht sicher, ob dies den gewünschten Ansatz des OT / OP betont. IEF und EVA sind eher für Umfrageformulare als für die Veröffentlichung von Inhaltsformularen gedacht.
Nilsun
0

Ich kann die von inizio veröffentlichte Views Headers-Lösung nicht kommentieren. Ich habe nicht genug Ruf.

Nun, ich möchte posten, dass Sie die Formularumleitung nach dem Senden mit Regeln lösen können und kein benutzerdefiniertes Modul erstellen müssen, das hook_form_alter.

  • Erstellen Sie eine Regel, die unter "Nach dem Speichern neuer Inhalte" für Ihren Knotentyp ausgelöst wird
  • Fügen Sie eine Bedingung hinzu, vergleichen Sie Daten und vergleichen Sie den Selektor [site: current-page: path], der Ihrem Ansichtspfad entspricht
  • Hinzufügen einer Aktionsseitenumleitung zum Ansichtspfad

Kann auch nützlich sein Form Block- und Advanced Form Block-Module, aber wenn Sie PHP-Code in Ansichtskopfzeilen einfügen, verhindern Sie, dass Sie ein zusätzliches Modul installieren

Und fertig!

Ferriol
quelle