RULES mit Entityforms nutzen [gelöst]
am 17.10.2016 - 16:44 Uhr in
+ + + + Anleitung bzw. Zusammenfassung ganz unten + + + +
Servus Community,
ich bin gerade dabei 2 Nutzergruppen A und B zu verknüpfen.
Gruppe A erstellt Content.
Gruppe B kann diesen Content ansehen und soll den Inhabern (A) eine Nachricht zukommen lassen.
Hierfür nutze ich wegen bestimmter Einstellungen nicht "Webform" sondern das Modul "Entityform".
Mein Problem ist nun die Definition der RULES, insbesondere die "Conditions". Dort kann ich bestimmen, welche User die Email bekommen bzw. welche Rolle jene besitzen sollen.
TEST: "entity:user" (The user who submitted the form) habe ich unter "USER" dort testweise eingetragen, was soweit funktioniert, dass der Ersteller eine Nachricht bekommt (Gruppe B), wenn er die Form ausfüllt. Es soll aber Gruppe A die Email bekommen, also die Erzeuger des Contents. Bei den "Data Selector" feldern gibt es aber nichts vergleichbares - ausser "entity:feed-node:author". Ich verstehe leider nicht, was ein Feed ist, aber es funktioniert damit schonmal nicht.
Allgemein habe ich die Form und die andere Datenbank von (A) über eine Entity in der Form verknüpft. Der USER B muss also in der Form den Datensatz von A auswählen.
Muss ich zusätzlich etwas einstellen um weitere Bedingungen?
- Anmelden oder Registrieren um Kommentare zu schreiben
Hast du
am 17.10.2016 - 19:17 Uhr
Hast du https://www.drupal.org/project/entity_rules
installiert?
Grüße Jenna
Du hast also eine
am 18.10.2016 - 06:43 Uhr
Du hast also eine Entityreference im Entityform auf den Content von A?
Wenn Du dann in der Rule bei Condition noch ein "Entität hat Feld" hinzufügst und diese auf das Entityreference-Feld zeigen lässt solltest Du den Inhalt des referenzierten Contents in der Rule verfügbar haben und kannst so darauf zugreifen (z. B. auf die Mail des Authors von Content A).
entity:field-reference:author:mail (Rules schlägt Dir verfügbare Optionen vor im Datenauswahlmodus, im direkten Eingabemodus siehst Du unter Umständen nur entity:field-reference)
(field-reference ist in Deinem Fall der Name des Entityreference Feldes).
@Jenna: Ja ich nutze Entity
am 18.10.2016 - 09:49 Uhr
@Jenna: Ja ich nutze Entity Rules 7.x-1.0-alpha4
@Stefan: Genau so, wie du es beschreibst, hab ich es auch angenommen, dass es klappt. Nur leider gibt es keine "Condition" mit dem Field "entity:field-reference". Stattdessen wird dort nur folgendes, relevantes angezeigt bzw. steht zur Auswahl:
entity:type:feed-node: Feed node Feed Node that imported this entity.
entity:user User The user who submitted the form.
entity:user:roles: User roles The roles of the user.
entity:user:feed-node:
entity:user:feed-node: Und weitere vergleichbare Optionen
Woran kann das nur liegen?
Zeige mal Deine Rules
am 18.10.2016 - 10:07 Uhr
Zeige mal Deine Rules Konfiguration
Und auch die Konfiguration des Entityforms (die Felder)
genau da teste ich gerade rum
am 18.10.2016 - 12:11 Uhr
genau da teste ich gerade rum ...
Meiner Meinung nach müsste folgendes funktionieren, tut es aber nicht:
Conditions:
Entity has field
Parameter: Entity: [entity], Field: field_name (Dieses ist in der Form als Entity eingebaut)
Interessant hierbei ist: Wenn ich Entity has field umstelle auf User has roles (User: [entity:user], Roles: authenticated user), dann kommen die Emails zumindest beim Admin bzw. Autorisierten Nutzer des Forms an.
Actions:
Elements Operations
rule: Entityform Notifications Email Send
Parameter: Entityform: [entity], Email Address: [entity:user:mail], Show submitted data: true, Email Subject: betreff der test email-..., Email Body: [site:mail]
Die Entity Form sieht sehr einafch aus:
Label Machine name Field type
firmeneintraege-versuch4 field_firmeneintraege_versuch4 Entity Reference
Das Selectmenü zeigt also die Inhalte aus dem feld field_name
Elements Operations rule:
am 18.10.2016 - 12:07 Uhr
Elements Operations
rule: Entityform Notifications Email Send
Parameter: Entityform: [entity], Email Address: [entity:field-name:author:mail], Show submitted data: true, Email Subject: betreff der test email-..., Email Body: [site:mail]
Hast du es so probiert?
entity:field-name:author:mail
am 18.10.2016 - 12:17 Uhr
entity:field-name:author:mail
gibt es bei mir leider nicht :(
entity's gibts dort nur folgende zur auswahl (mit folgendem anfang):
entity:type...
entity:language Language Entityform submission "language" property.
entity:uid Uid Entityform submission "uid" property.
entity:draft Draft Entityform submission "draft" property.
entity:sid Sid Entityform submission "sid" property.
entity:url URL The URL of the entity.
entity:user...
entity:feed-node...
Leg Dir doch mal eine neue
am 18.10.2016 - 13:18 Uhr
Leg Dir doch mal eine neue Entityform_submission Rule an und setze dort die Condition wie genannt und als Aktion nimmst Du dann "Send mail". Dann sollte das mit dem Author funktionieren.
Die neue Rule musst Du nach dem Anlegen auch noch im Entityform einbinden (Add Rule), das passiert nicht automatisch. Stolper ich auch immer mal wieder drüber.
.... ach, da haben wir das
am 18.10.2016 - 15:31 Uhr
.... ach, da haben wir das Problem!
Ich habe die Role garnicht zum Form hinzugefügt!!!!!!
ABER da ist das Problem: Die "Entityform" taucht garnicht in der Liste der Roles dort auf zum Hinzufügen!
Ich lege jetzt alles nochmal neu an und berichte, was daraus geworden ist ;)
Wie ich sehe, liegt das
am 18.10.2016 - 15:43 Uhr
Wie ich sehe, liegt das Problem bei mir nicht an den Rules, sondern an der Verknüpfung mit der Form!!!
Wie muss das denn geschehen?
Ich denke, hier müsste ein bestehendes Entity Reference Feld mit Bezug zum Autor ergänzt werden, da sonst die Verknüpfung fehlt. Leider gibt es kein derartiges Feld, was auf User referenziert.
@Stefan: Dann hätte ich auch eine Feld-Bezeichnung aus deinem 1. Post hier.
Was ich getestet habe und nicht funktionioniert ist in der Form: Eine "Entity reference" auf ein bestehendes Field setzen, das auch in der Form vorkommt.
Du solltest über das
am 19.10.2016 - 06:44 Uhr
Du solltest über das Entityreference-Feld auch an den User (Autor) des referenzierten Node kommen und damit auch an die Mailadresse des Autors.
Eine "Entity reference" auf ein bestehendes Field setzen, das auch in der Form vorkommt
Ich bin nicht sicher ob Du dich jetzt nur verschrieben hast, aber so wäre es richtig
Ein "Entity reference"-Feld im Entity Form ergänzen welches auf den gewünschten Content zeigt.
Das kann z. B. ein Beitrag (Node) sein. Du kannst dann noch einschränken z. B. auf bestimmten Content Type oder über Views auch auf komplexere Filter gehen.
Es ist auch möglich eine Entity Reference auf einen User zu setzen, allerdings sehe ich das nicht als Lösung für Dein Problem.
Das habe ich alles so
am 19.10.2016 - 12:00 Uhr
Das habe ich alles so gemacht, daher ist es auch so komisch.
Was hingegen nicht funktioniert ist dein 1. Satz: Als Entityreference-Feld in der Form kann ich keinen User auswählen sondern nur die Fields.
Irgendwo passt da was
am 19.10.2016 - 12:14 Uhr
Irgendwo passt da was grundsätzlich nicht.
Entityreference ermöglicht Dir ein Feld in eine Entity einzubauen, welches auf eine andere Entity verweist.
Entweder passt es irgendwo im Verständnis von Entityreference bzw. Entity und Field nicht oder Du redest hier nicht über Entityreference sondern etwas anderes.
ich hab mal einen Screenshot
am 19.10.2016 - 13:26 Uhr
ich hab mal einen Screenshot in den Anhang gepackt, der die Entityform samt Felder und meiner möglichen Auswahl an Feldern zeigt.
Von User oder ähnlichem ist dort nicht die Rede ... bzw. kann ich es nicht auswählen.
So muss es doch gemacht werden?!
Nimm doch mal bitte die
am 19.10.2016 - 14:06 Uhr
Nimm doch mal bitte die Feldauswahl bei dem Screenshot weg, damit man die Typen der bereits vorhandenen Felder sieht.
Danke erstmal für deine
am 19.10.2016 - 15:38 Uhr
Danke erstmal für deine Hilfe!!!!
Mir ist bei der Durchsicht aufgefallen, dass ich noch das Modul Webform verwende und darauf die Node auslegelgt ist. Vllt liegt es daran?!
Hier ist mal der Screenshot. Das durchgestrichene hatte ich zwischendurch nur testweise drin.
Du hast ja das Feld
am 19.10.2016 - 16:07 Uhr
Du hast ja das Feld anbieter_waehlen drin als Entity Reference. Hier müsstest Du nun auf den Inhalt referenzieren und dann kannst über dieses Feld in den Rules auch den Author des referenzierten Inhalts auslesen (siehe meine Hinweise zu den Regeln) und somit auch die Mailadresse des Autors erlangen.
Zeige ggf. noch einmal die Konfiguration des Entity Reference Fields anbieter_waehlen.
Zusammenfassung der Einstellungen
am 19.10.2016 - 17:46 Uhr
Ich fasse nochmal zusammen:
Fields "anbieter_waehlen" ist aus der Node, auf die referenziert wird.
"anbieter_waehlen" habe ich als "Entity reference" der Entityform hinzugefügt. Es ist eine Select list. Dabei habe ich folgende Einstellungen vorgenommen (danach hast du ja zuletzt gefragt):
1. Required field = ja (sollte hier aber egal sein)
2. Number of Values: 3 (sollte hier aber egal sein)
3. Target type: Node <------------------------------------------------------------------------------ ist das so richtig?
4. Mode: Simply (plus anklicken der Node, auf die refrerenziert wird)
5. sonst hab ich nichts ausgewählt
Eine Rule habe ich bei "Entityform Submission Rules" hinzugefügt
- Settings: Entityform Submissions
- Conditions: Entity has field ..... Parameter: Entity: [entity], Field: field_anbieterwaehlen
- Actions: rule: Entityform Notifications Email Send .... Parameter: Entityform: [entity], Email Address: [entity:field-name:author..., Show submitted data: true, Email Subject: rule_for_entityform..., Email Body: rule_for_entityform..
Problem:
1. Beim testweise abschicken der Form gibt es eine Fehlermeldung, dass die EMail unbekannt ist (Referenzierung funktioniert wohl immernoch nicht)
2. [entity:field-name:...] steht weiter nicht zur Auswahl
so weit korrekt, es sollte
am 19.10.2016 - 18:27 Uhr
so weit korrekt, es sollte aber [entity:field-anbieterwaehlen:author:mail] heißen.
vielleicht auch erstmal schauen ob entity:field-anbieterwaehlen bei Replacement Patterns sichtbar ist. DAs müsste auf jeden Fall da sein.
Danke nochmals für dein
am 20.10.2016 - 11:34 Uhr
Danke nochmals für dein Feedback!!!!
[entity:field-anbieterwaehlen] ist vorhanden. Den Doppelpunkt und alles danach wird aber NICHT als Auswahl angeboten: [entity:field-anbieterwaehlen:....]
[entity:field-anbieterwaehlen:author:mail] kann ich zwar eintragen, beim testen spuckt er mir aber die Fehlermeldung aus:
Unable to send e-mail. Contact the site administrator if the problem persists.
Der Zugriff auf die Userdaten klappt also nicht. Ist nur die Frage, woran das liegen kann....
Muss ich die NID vllt zustzlich über die URL übertragen?
Zitat: [entity:field-anbieter
am 20.10.2016 - 11:22 Uhr
[entity:field-anbieterwaehlen] ist vorhanden.
Probiere bitte mal diesen Wert zu nehmen, die Rules dann erstmal speichern und erneut wieder bearbeiten.
Ich habe gelegentlich bei neuen Rules das Problem das ich Werte auch nicht sehe und erst bei speichern und wieder öffnen alles vorhanden ist was nach field_mein-name... kommt.
Grüße Jenna
Das klappt leider auch nicht
am 20.10.2016 - 11:42 Uhr
Das klappt leider auch nicht Jenna :( Ich habe erst [entity:field-anbieterwaehlen] eingegeben, gespeichert und dann [entity:field-anbieterwaehlen:author:mail] eingegeben. Leider stand das beim 2. Mal dann nicht zur Auswahl.
Muss ich vllt die NID per URL übergeben? ich habe da mal soetwas gelesen ...
Oder darf ich nicht die "Rule: Entityform Notification Email send " verwenden?
Also, ich gehe wie folgt
am 20.10.2016 - 12:55 Uhr
Also, ich gehe wie folgt vor:
/admin/config/workflow/entity_rules/entityform_submission
Rufe diesen Pfad erstmal auf und guck was du da bisher erstellt hast.
Entity is of bundle
Parameter: Entität: [entity], Entitätstyp: Entityform Submission, Entity bundle: Client
Entität hat Feld
Parameter: Entität: [entity], Feld: field_client_reference
E-Mail-Versand
Parameter: An: entity:field-client-reference:author:mail, Betreff: Anfrage an..., Nachricht: Hallo Author, eine neue..
Client ist hierbei mein Name des /admin/structure/entityform_types, diesen natürlich ersetzen.
Das entity:field-client-reference:author:mail darf soweit ich mich erinnere nicht in eckigen Klammern stehen.
Das Ergebnis bei mir ist eine Anfrage über einen beliebigen von 3 Inhaltstypen (Miete, Kauf, Fewo).
Ich habe 3 einzelne (der Übersicht halber) entity rules angelegt:
1 x bekommen wir eine Nachricht
1 x der Besucher / Interessent
1 x der Inhaber / Autor der das Objekt eingestellt hat
Bei dir muss dann nur noch der Weg von Gruppe A und B berücksichtigt werden, aber das ist ja eher Nebensache.
Grüße Jenna (du hast da irgendwo einen Wurm drin, gehen tut es auf jeden Fall)
Danke für deine Mithilfe
am 20.10.2016 - 14:28 Uhr
Danke für deine Mithilfe Jenna!!!
Deine Einstellungen mit den zuvor veröffentlichten identisch - ausser, dass du eine 2. Condion hast: "Entity is of bundle". Diese habe ich als AND-verbindung definiert - ok?
Das mit den eckigen Klammern [] hat wohl etwas mit meiner Version zu tun, da dies vom System in der Form [entity:field-anbieterwaehlen:author:mail] vorgegeben wird.
Leider klappt es weiterhin nicht :(
Grüße
Philipp
Zitat: Das mit den eckigen
am 20.10.2016 - 16:17 Uhr
Das mit den eckigen Klammern [] hat wohl etwas mit meiner Version zu tun
Nein, das ist immer gleich.
Das Ersetzungsmuster hat bei "direkter Dateineigabe" Klammern und bei "zur Datenauswahl wechseln" keine Klammern.
Der graue Button ist gemeint mit dem du die Art der Eingabe wechseln kannst (in meinem Theme ist der grau...).
Grüße Jenna
aha, da kommen wir der sache
am 20.10.2016 - 17:19 Uhr
aha, da kommen wir der sache näher!!!
den grauen Button habe ich nie betätigt und immer das feld mit [] verwendet!
statt "entity:field-anbieterwaehlen:author:name" kann ich dort jetzt jedoch nur "entity:field-anbieterwaehlen:2:author:name" auswählen (statt 2 geht auch 0 bis 3, was vermutlich die IDs der Usergroups sind?!)
Zitat: Gruppe A erstellt
am 20.10.2016 - 18:57 Uhr
Gruppe A erstellt Content.
Erstelle mal eine neue Views vom Typ Inhalt mit Page (irgendein Pfad) und dazu noch eine Entity Reference hinzufügen.
Unter Felder: Beitrags-ID
Unter Filterkriterien: den Content Type von Gruppe A
Beziehungen:
Inhalt: Autor
Entity Reference: Entität, die verweist
Unter Kontextfilter: Beitrags-ID
Vorgabewert bereitstellen: Beitrags-ID aus der URL
In deinem Entityform (bei mir z.B. Client) ein Feld anlegen:
field_client_reference als Entity Reference mit Kontrollkästchen/Auswahlknöpfe
unter bearbeiten bei diesem Feld als Zieltyp Beitrag wählen
ENTITY SELECTION
Modus *
Views Filter by an entity reference view
und unter
View used to select the entities *
Hier muss jetzt deine vorher erstellte Views auswählbar sein
Danach wieder unter admin/config/workflow/rules/components nachsehen ob du jetzt alle Werte hast.
Vielleicht fehlt bei dir komplett der Bezug was mit dem entity reference überhaupt erreicht werden soll.
Das gibt sicher auch noch andere Wege, aber dieser funktioniert bei mir bestens.
Grüße Jenna
Zitat:statt
am 21.10.2016 - 05:33 Uhr
statt "entity:field-anbieterwaehlen:author:name" kann ich dort jetzt jedoch nur "entity:field-anbieterwaehlen:2:author:name" auswählen (statt 2 geht auch 0 bis 3, was vermutlich die IDs der Usergroups sind?!)
Du lässt im Feld field_anbieterwaehlen mehrere Einträge zu? Das würde das erklären. Das macht es ggf. schwieriger insbesondere wenn Du viele bzw. unlimitierte Einträge zulässt.
den grauen Button habe ich nie betätigt und immer das feld mit [] verwendet!
siehe auch http://www.drupalcenter.de/node/55791#comment-193834
So funktioniert es
am 21.10.2016 - 09:47 Uhr
DAAAAAAANKEEEEE STEFAN UND JENNA!!!!!!!!!!!!!!!!!!!
Jetzt klappt es!!! :)
Es lag wirklich daran, dass ich in der Entityform 3 Werte zugelassen habe! Das darf natürlich nicht sein - du hast Recht!
Auch keine eckigen Klammern durften verwendet werden, da ich das Feld vom Typ "Data Selector" und NICHT "Value" für folgenden Befehl verwenden musste: entity:field-anbieterwaehlen:author:mail
-- Hier die Zusammenfassung als Anleitung für nachfolgende Generationen --
Entityform mit einem Feld "Entity Reference" und z.B. Select List anlegen, das auf genau EINE 1 Node verweist.
Fields "anbieter_waehlen" ist aus der Node, auf die referenziert wird.
"anbieter_waehlen" habe ich als "Entity reference" der Entityform hinzugefügt. Es ist eine Select list. Dabei habe ich folgende Einstellungen vorgenommen (danach hast du ja zuletzt gefragt):
1. Required field = ja (sollte hier aber egal sein)
2. Number of Values: 3 (sollte hier aber egal sein)
3. Target type: Node
4. Mode: Simply (plus anklicken der Node, auf die referenziert wird)
5. sonst hab ich nichts ausgewählt
Eine Rule habe ich bei "Entityform Submission Rules" hinzugefügt
- Settings: Entityform Submissions
- Conditions: Entity has field ..... Parameter: Entity: [entity], Field: field_anbieterwaehlen
- Actions: rule: Entityform Notifications Email Send .... Parameter: Entityform: [entity], Email Address: entity:field-anbieterwaehlen:author:mail (WICHTIG: "Data Selector" Feld nutzen!)..., Show submitted data: true, Email Subject: Email-Betreff..., Email Body:Text in der Email..