-
backend userid
hi
wie ist es möglich die id des im backend angemeldeten users zu ermitteln?
ich habe mir ein neues module geschrieben, in welchem jeder benutzer im backend artikel eintragen kann. nun möchte ich aber das ein angemeldeter benutzer nur seine artikel sehen bzw. ändern kann.
ich dachte mir, dass ich dies über die dca-eigenschaft sorting und dann filter löse.
nun weiß ich aber nicht ob das richtig ist bzw. wie ich die benutzerId des Backend-Users herausbekomme.
kann jemand helfen??
-
Du kannst diese wahrscheinlich folgendermaßen importieren
PHP-Code:
$this->import('BackendUser', 'User');
$userid = $this->User->id;
$username = $this->User->username;
-
danke für deine schnelle antwort.
sowas habe ich mir schon geadacht.
PHP-Code:
'filter' = array('userid=?', '$userid')
aber wie bekomme ich diese userid dann in $userid rein damit der filter funktioniert?
-
Code:
'filter' = array('userid' => $this->User->id)
theoretisch doch so. Ich weiß aber nicht ob du dieses Konstrukt dann auch genau so anwenden kannst
-
habe das mit dem filter jetzt versucht.
ich bin aber glaube ich etwas falsch gelegen, da man mit 'filter' nur eigen filter erstellen kann, welche man dann auswählen kann.
ich möchte aber das der filter sofort angewandt wird wenn man das neue modul anklickt.
wahrscheinlich muss ich dazu eine neue function schreiben, die durch das 'onload_callback' aufgerufen wird.
könnte das so funktionieren?
-
Versuch einfach mal den $this->import... direkt in der DCA-Datei zu machen (als ausserhalb einer Funktion oder Klasse).
-
sorry das ich erst jetzt wieder schreibe.
meinst du das $this->import->BackendUser?
was sollte mir das helfen?
ich benötige irgendeine funktion oder so durch welche nur bestimmte artikel angezeigt werden.
-
Hast du hier schon eine Lösung? Denn ich brauche genau die gleiche Funktion.
Wäre echt super.
Danke
-
hi
nein habe leider noch keine lösung.
sitze aber noch dabei.
-
Das Filtern funktioniert bei mir nicht mal wenn ich hardcoded die Filterbedingung (nach City) eingebe.
Code:
$GLOBALS['TL_DCA']['tl_member']['list']['sorting']['filter'] = array('city=?' => 'München');
Das erzeugt eine Meldung:
Code:
Query error: Unknown column 'F' in 'where clause' (SELECT COUNT(*) AS total FROM tl_member WHERE F) thrown in /Volumes/lt/Documents/work/Kairos/EinGuterTag/htdocs/taxi/system/libraries/Database.php on line 642
Hat hier jemand eine Idee?
-
Hallo juergen.vallant,
ich glaube ich habe die Lösung für dein Problem gefunden.
1) einen callback auf onload wie du bereits erwähnt hast:
Code:
$GLOBALS['TL_DCA']['tl_member']['config']['onload_callback'][] = array('MemberFilter', 'setFilter');
2) dann die Klasse definieren
Code:
class MemberFilter extends Backend
{
public function __construct()
{
parent::__construct();
$this->import('BackendUser', 'User');
}
public function setFilter()
{
//hier steht die die id des benutzers drinnen $this->User->id;
$GLOBALS['TL_DCA']['tl_member']['list']['sorting']['filter'][] = array("city='München'");
}
}
3) noch die letzte Zeile, also das sorting anpassen. Damit das aber geht, muss in der Datenbank gespeichert werden wer welche Daten erstellt hat.
Ich hoffe ich konnte dir damit ein wenig helfen.