Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Module › Views ›

[gelöst] Feld deaktivieren, falls Node veröffentlicht ist

Eingetragen von ksiebel (25)
am 28.03.2011 - 12:55 Uhr in
  • Views

Hey zusammen,

ich habe ein recht wichtiges Feld in einer Node, welches gesperrt werden soll sobald die Node published ist (status = 1). Alle anderen Felder sollen noch editierbar sein - nur das eine sollte deaktiviert sein (dargestellt aber nicht editierbar).

Schneller Lösungsansatz?

Wie bekomme ich in hook_form_alter den Status der Node?

Lg,
Kilian

‹ Timestamp: Abgelaufene Veranstaltungen aktivieren Inhalt und CCK getrennte Berechtigungen ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Lass dir mal das Form-Array

Eingetragen von SteffenR@drupal.org (2262)
am 28.03.2011 - 14:00 Uhr

Lass dir mal das Form-Array mithilfe des [do:devel] Moduls ausgeben - in diesem Array solltest du dann auch den Status deiner Node finden..

<?php
function mymodule_form_alter(&$form, &$form_state, $form_id) {
dsm($form);
  if(
$form_id=='myform') {
  }
}
?>

SteffenR

  • Anmelden oder Registrieren um Kommentare zu schreiben

Okay, leider steht der Status

Eingetragen von ksiebel (25)
am 28.03.2011 - 14:03 Uhr

Okay, leider steht der Status laut print_r auch beim Add-Formular schon auf "1".

Andere Idee woran ich im form_alter erkennen kann ob es eine published node ist?

  • Anmelden oder Registrieren um Kommentare zu schreiben

ksiebel schrieb Okay, leider

Eingetragen von SteffenR@drupal.org (2262)
am 28.03.2011 - 14:31 Uhr
ksiebel schrieb

Okay, leider steht der Status laut print_r auch beim Add-Formular schon auf "1".
Andere Idee woran ich im form_alter erkennen kann ob es eine published node ist?

Wenn der Status der Node dort schon auf 1 steht - dann heisst es wohl, dass die Node schon puplished ist.. Setz sie doch mal auf unpublished und prüfe dann die Ausgabe noch einmal ..

SteffenR

  • Anmelden oder Registrieren um Kommentare zu schreiben

Das Add-Formular und das

Eingetragen von Exterior (2903)
am 28.03.2011 - 16:32 Uhr

Das Add-Formular und das Edit-Formular könntest du übrigens ganz einfach unterscheiden, der Node im Edit-Formular hat nämlich schon eine Node-ID, im Add-Formular noch nicht.

Wenn also der Status = "1" und eine Node-ID vorhanden ist, dann hast du einen bereits gespeicherten, veröffentlichten Node.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Und hier das funktionierende

Eingetragen von ksiebel (25)
am 29.03.2011 - 08:49 Uhr

Und hier das funktionierende Ergebnis:

Im form_alter:

if ($form_id == 'stellenangebot_node_form') {

if (isset($form['nid']['#value']) && $form['#node']->status == '1') {
$form['field_stellentyp']['#pre_render'][] = 'disable_fields_function';
$form['field_ausbildungsberuf']['#pre_render'][] = 'disable_fields_function';
$form['field_beruf'][0]['#pre_render'][] = 'disable_fields_function';
}
}

Die zugehörige Funktion:

function disable_fields_function($element) {
  $element['value']['#attributes'] = array('disabled' => 'disabled');

  return $element;
}

  • Anmelden oder Registrieren um Kommentare zu schreiben

Okay, dabei tut sich

Eingetragen von ksiebel (25)
am 29.03.2011 - 12:54 Uhr

Okay, dabei tut sich folgendes Problem auf:
Wenn man die Felder auf disabled setzt werden die Wete beim erneuten Speichern überschrieben und sind leer.

Hat da jemand eine Idee?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Textfelder werden beim

Eingetragen von ksiebel (25)
am 29.03.2011 - 13:11 Uhr

Textfelder werden beim erneuten Speichern geleert - bei Selects funktioniert disabled aber hervorragend.
Für Textfelder bietet sich noch das readonly-Attribut.

Hier die entsprechende Lösung:

Form Alter:

function DEINMODUL_form_alter(&$form, $form_state, $form_id) {

if ($form_id == 'DEINCONTENTTYPE_node_form') {

if (isset($form['nid']['#value']) && $form['#node']->status == '1') {
$form['field_stellentyp']['#pre_render'][] = 'disable_fields_function'; // Select-Feld kann disabled werden
$form['field_ausbildungsberuf']['#pre_render'][] = 'readonly_fields_function'; // Textfelder müssen readonly gesetzt werden
$form['field_beruf'][0]['#pre_render'][] = 'readonly_fields_function'; // Textfelder müssen readonly gesetzt werden
}
        }
}

Die beiden Funktionen:

function disable_fields_function($element) {
  $element['value']['#attributes'] = array('disabled' => 'disabled');

  return $element;
}

function readonly_fields_function($element) {
  $element['value']['#attributes'] = array('readonly' => 'readonly');

  return $element;
}

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
  • Welche KI verwendet ihr?
  • Update Manger läst sich nicht Installieren
Weiter

Neue Kommentare

  • melde mich mal wieder, da ich
    vor 2 Tagen 12 Stunden
  • Hey danke
    vor 3 Tagen 7 Stunden
  • Update: jetzt gibt's ein
    vor 4 Tagen 1 Stunde
  • Hallo, im Prinzip habe ich
    vor 1 Woche 1 Tag
  • Da scheint die Terminologie
    vor 1 Woche 1 Tag
  • Kannst doch auch alles direkt
    vor 1 Woche 5 Tagen
  • In der entsprechenden View
    vor 1 Woche 5 Tagen
  • Dazu müsstest Du vermutlich
    vor 1 Woche 5 Tagen
  • gelöst
    vor 4 Wochen 2 Tagen
  • Ja natürlich. Dass ist etwas,
    vor 4 Wochen 3 Tagen

Statistik

Beiträge im Forum: 250233
Registrierte User: 20449

Neue User:

  • Mroppoofpaync
  • 4aficiona2
  • AppBuilder

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 13 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association