Sziasztok!
Rules használatával a következőt szeretném:
Felhasználó módosítja az adatait, és mentés után ha be van jelölve egy adott checkbox, akkor egy figyelmeztető üzenetet írjon ki fölül.
Ez működik is, azzal a "szépség hibával", hogy kétszer kell elmenteni, hogy kiírja az üzenetet. Illetve ha előzőleg be volt jelölve és kivesszük a jelölést, kétszer kell elmenteni, hogy eltűnjön az üzenet mentés után.
A következők a beállításaim:
React on event: After updating an existing user account
Conditions: Data comparison -> equals -> Data value: True
Actions: Show a message on the site -> Value: warning
Valamit rosszul állítok be, vagy ez egy bug a rulesben?
Van valakinek ötlete, hogy hogy lehetne megoldani, hogy egyből kiírja mentés után az üzenetet, és ne kelljen kétszer menteni?
Köszönöm előre is a segítséget!
Van még telepítve valamilyen
Van még telepítve valamilyen egyéb Rules-t kiegészítő modul? Ha igen, érdemes volna egyesével letiltani őket.
Ha kiüríted a site-cache-t, akkor már elsőre feldobja a warningot?
Ilyen célra tartok egy tesztrendszert, ahol le tudom ellenőrizni, hogy mindig jelentkezik-e a hiba, vagy csak az adott rendszerben van ütközés egy másik modullal...stb.
Itt van szó hasonló dologról és a megoldásról
Teszteltem
Természetesen teszt környezetben teszteltem a hibát, még egy új, üres drupalon is kipróbáltam. (csak rules és entity van rajta)
Ha törlöm közvetlenül mentés előtt a teljes gyorsítótárat, akkor is fennáll a hiba.
Valósznűleg,
a feltétel nem telejsűl. Kiszedném a feltételet és akkor megnézném hogy az üzenet megjelenik vagy sem.
Drupal developer at Cheppers
Ez egyértelmű.
Igen, egyértelmű, hogy a feltétel nem teljesül.
A feltétel nélkül kiírja az üzenetet, de így nincs értelme.
A feltételnek teljesülnie kéne mentés után, de csak akkor teljesül, ha még egyszer elmentem.
Mentéskor a rules valamiért azokat az adatokat veszi figyelembe, amik mentés előtt voltak megadva.
Akkor szerintem nem Rules
Akkor szerintem nem Rules bugról lesz szó, legfeljebb csak arról, hogy a mentés pillanatában még nincs meg a mező true állapota, viszont a második mentéskor már meg van. Ezért tud csak másodjára teljesülni a Rules feltétel.
A gyakorlati tapasztalataim szerint az ilyen vezérlő(mező) dinamikus kiértékelést érdemesebb switch-case szerkezetben megoldaniConditional Rules).
Az is megoldás lehet, ha nem az Adatok összehasonlításával true-ra vizsgálod a mezőt, hanem inkább az Adatérték üres-t negálod.
Kipróbáltam, ugyan az
Kipróbáltam az empty és a switch-case változatot is.
Ugyan azt csinálják, hogy a mentés előtti érték szerint írja/nem írja ki az eredményt.
Azért tartanám ezt bugnak, mert az "After updating an existing user account" eseménykezelőt én úgy értelmezném, hogy mentés után értékel(miután elmetette az új adatokat), nem pedig azután, hogy megnyomtam a mentés gombot(régi adatokkal). Arra szerintem a "Before saving a user account" volna jó.
Egy dologra figyelni kell,
mikor beállítod a conditiont ott nem mindegy hogy melyik "user object"-t választod ki.
Két opció van, a módosított és a szerkesztés előtti.
Csináltam egy screenshot-ot hátha úgy érthetőbb:
https://www.evernote.com/shard/s263/sh/fe4d6da5-33d4-4970-b1bc-e2ff140a8f70/0423c10723e23531
Kipróbáltam és a következő beállításokkal nekem működött:
https://www.evernote.com/l/AQfrcaO46INJRJOOE9HdjxOH6C5C4JSf6zE
Drupal developer at Cheppers