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

  • gepatchte PHP Version 7.4 für Windows
  • Canvas Palette: Eine fertige Komponentenbibliothek für Drupal Canvas
  • Hilfe zu Updates oder Composer
  • Vergleich Drupal und Contao
  • [geloest] Blocks in Bootstrap nebeneinander darstellen und nicht untereinander
  • DrupalCamp Frankfurt 27-28 November 2026
  • Bitte mein Bentzerkonto löschen
  • Beim Aufruf einiger Inhalte erhalte ich folgende Fehlermeldung
  • Neuinstallation: vermutlich ein rewrite-Problem
  • Drupal CMS installieren
  • [erledigt]MP3 in Drupal 10 einbinden
  • (gelöst)Drupal 11 installieren
Weiter

Neue Kommentare

  • Guten morgen und Danke
    vor 1 Stunde 32 Minuten
  • Evtl. versuchen auf PHP 8 zu wechseln
    vor 7 Stunden 43 Minuten
  • Danke Schmittrich. Die Frage
    vor 1 Tag 23 Stunden
  • Keine Antwort auf die Frage nach dem Woher
    vor 2 Tagen 2 Stunden
  • Danke ich werde mir die
    vor 5 Wochen 6 Tagen
  • Vielen Dank für Ihren
    vor 6 Wochen 2 Tagen
  • Composer ist sehr ratsam
    vor 6 Wochen 4 Tagen
  • Vielen Dank für den
    vor 6 Wochen 6 Tagen
  • Die alten CMS Vergleiche von contentmanager.de
    vor 7 Wochen 10 Stunden
  • Gut gemacht
    vor 7 Wochen 10 Stunden

Statistik

Beiträge im Forum: 250322
Registrierte User: 20569

Neue User:

  • AnthonyhoF
  • Philiphelve
  • Robertspaft

» Alle User anzeigen

User nach Punkten sortiert:
wla9466
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 11 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