[gelöst]Manuell erzeugte Referenz wird in Inhaltsansicht nicht angezeigt

am 22.10.2012 - 08:39 Uhr in
Hallo,
ich habe ein Modul geschrieben, welches manuell eine (Rück-)Referenz in die Datenbank schreibt. Wobei Typ A mehrere Referenzen auf Typ B besitzen kann. Das ganze wird also intern über eine content_field_B Tabelle gelöst.
Das merkwürdige an der Sache ist, das die backref in der Ansicht eines Datums vom Typ B korrekt angezeigt wird. Ebenso gibt eine manuell erstellte View, welche als Argument den Titel eines Typs A erhält, die korrekte Liste aller verknüpften Typen B zurück.
Nur die Standardansicht eines Typs A zeigt nicht die mit dem Modul erstellten B's an. Ich hatte es allerdings bis jetzt 2 mal geschafft, dass auch dort alle vorhandenen Daten angezeigt werden. Ich kann das ganze aber nicht reproduzieren....
Ich hoffe das Problem wird aus der Beschreibung verständlich. Ich weis nicht wirklich, an welcher Stelle das ganze scheitert.
Danke und viele Grüße
- Anmelden oder Registrieren um Kommentare zu schreiben
hallo raffi Zitat: Ich hoffe
am 22.10.2012 - 13:14 Uhr
hallo raffi
Ich hoffe das Problem wird aus der Beschreibung verständlich
also für mich nicht .. :)
ohne code bespiel eh nicht wirklich ...
Ich hatte es allerdings bis jetzt 2 mal geschafft, dass auch dort alle vorhandenen Daten angezeigt werden
klingt nach cache?!
und warum benutzt du eigendlich nicht das node reference modul um das umzusetzen?
grüße
stef
Hallo,ich habe mal zwei
am 23.10.2012 - 08:48 Uhr
Hallo,
ich habe mal zwei Bilder angehängt, um das ganze zu visualisieren. Die Struktur dahinter sieht folgendermaßen aus.
Es existieren 2 Inhaltstypen, Auftrag und Server. Auftrag besitzt eine Beitragsreferenz auf einen oder mehrere Server, umgesetzt mit dem node reference Modul (Text mit Autovervollständigung und unbegrenzter Anzahl von Werten). Im Falle des Anlegens oder Ändern eines Auftrags werden die Standardmittel genutzt. Nun soll aber die Möglichkeit bestehen beim Anlegen eines Servers optional die Rückreferenz anlegen zu können. Umgesetzt wird dies äquivalent mit einem autocomplete Feld:
<?php
### Autovervollstaendigen-Feld fuer Kundenprojekt ###
$form['project'] = array(
'#title' => 'Kundenprojekt',
'#type' => 'textfield',
'#description' => 'zugehöriges Kundenprojekt',
'#autocomplete_path' => 'autocomplete',
);
?>
Nachdem also das selbst entwickelte Formular mit der Angabe des zugehörigen Auftrags abgeschickt wurde, soll diese Verbindung natürlich auch vorhanden sein. Im Falle einer view und der backref Anzeige im Server ist sie das auch (siehe Bild). Nur auf der Ansicht des Auftrags fehlt sie unter RDE Instanz(en): gänzlich (siehe Bild). Im konkreten Falle der Bilder müsste also unter RDE Instanz(en): der Eintrag reid_15 auftauchen.
Wegen der Cache Sache habe ich gerade mal nachgeschaut. Den habe ich komplett deaktiviert, daran sollte es also nicht liegen.
Viele Grüße
EDIT: Es scheint doch am cache zu liegen. Nachdem ich den cache manuell leere wird der Eintrag in der Auftragsansicht sofort angezeigt. Mir drängt sich trotzdem die Frage auf, warum dies trotz Deaktivierung relevant ist? Ich muss nach jedem ergänzten Eintrag über mein Formular (Server anlegen mit optionaler Angabe des Auftrags) den cache manuell leeren um die korrekte Anzeige zu erhalten.
Zitat: EDIT: Es scheint doch
am 23.10.2012 - 09:33 Uhr
EDIT: Es scheint doch am cache zu liegen. Nachdem ich den cache manuell leere wird der Eintrag in der Auftragsansicht sofort angezeigt. Mir drängt sich trotzdem die Frage auf, warum dies trotz Deaktivierung relevant ist? Ich muss nach jedem ergänzten Eintrag über mein Formular (Server anlegen mit optionaler Angabe des Auftrags) den cache manuell leeren um die korrekte Anzeige zu erhalten.
oder in deinem modul an der stelle
ein
cache_clear_all();
Nun soll aber die Möglichkeit bestehen beim Anlegen eines Servers optional die Rückreferenz anlegen zu können
verstehe ich immer noch nicht :)
ein auftrag ist ein kundenprojekt?
oder ist das eine 3. entität in deinem model?
vg
stf
Der Befehl cache_clear_all()
am 23.10.2012 - 10:37 Uhr
Der Befehl cache_clear_all() ist mir auch aufgefallen, da es ein ähnlich gelagertes Problem bereits im Thread [gelöst ]Cache Problem nach db_insert() gibt. Werde das mal so testen...
Der Codeschnipsel verwirrt mehr, als das er hilft. ;D
OK, dann will ich mal genauer werden. Der von mir genannte Server ist im System der Inhaltstyp RDE-Instanz. Ich hatte dies der Einfachheit halber verschwiegen. Ein Teil des Modells ist im angehängten Bild, relationships.jpg, zu sehen.
Meine Aufgabe ist es ein Formular zur Eingabe aller technischen Daten zu einem Auftrag, welche in 3 Inhaltstypen (u. a. RDE-Instanz) festgehalten werden, auf einer Seite zu ermöglichen. Ich erfasse also in einem selbstgeschriebenen Formular alle relevanten Daten zu 3 Inhaltstypen und speichere diese inklusive deren Refrenzen zueinander nach Absenden des Formulars in der DB ab. Ich nutze dafür die node_save Funktion.
Nun soll in diesem Formular ganz zu Anfang die Möglichkeit bestehen, den Auftrag anzugeben, welchem diese Werte zugeordnet werden sollen (siehe Bild form.jpg). Da ich aber eine Referenz auf die RDE-Instanz von Auftrag aus konfiguriert habe ist dies ja eine Rückreferenz (backref), nämlich von RDE-Instanz zu Auftrag. Und eben diese wird aus den nun bekannten Problemen erst nach dem Leeren des cache auch im angegebenen Auftrag angezeigt.
Ich hoffe jetzt wirds etwas klarer... ;D
Viele Grüße