Programmeren in Pimcore (ophalen username en userID)*

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • Ralfefernandes
  • Registratie: Juli 2007
  • Laatst online: 30-08-2023
Hi Tweakers,

Ik ben Pimcore aan het leren(Grotendeels gebaseerd op Symfony).

Nu wil ik data exporteren door gebruik te maken van command line.
Na dagen te hebben geprobeerd, het is mij nu gelukt om te exporten in json file. De gegevens komen uit de MariaDB.

Maar op dit moment wil ik mijn code iets dynamisch maken en verbeteren.

Ik wil dat mijn code automatisch de naam en de id toont van de gebruiker dat dat het formulier heeft aangemaakt.

Bijvoorbeeld hier:

code:
1
2
3
4
5
6
7
switch ($gacFormData['Created By']) {
                case 2:
                    $gacFormData['Created By'] = 'Admin';
                    break;
                case 4:
                    $gacFormData['Created By'] = 'Joana';
            }



Zo ziet een deel van mijn code eruit:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 $listing = new DataObject\GAC\Listing();
        $gacForms = $listing->getObjects();
        $gacFormSave = [];
        foreach ($gacForms as $gacForm) {
            $gacFormData['Finished Product'] = $gacForm->getFinishedProduct();
            if ($gacFormData['Finished Product'] === null) {
                $gacFormData['Finished Product'] = false;
            }
            $gacFormData['Sync Force Project'] = $gacForm->getSyncForceProject();
            $gacFormData['Sync Force Project Description'] = $gacForm->getSyncFormProjectDescription();
            $gacFormData['First Delivery Date'] = $gacForm->getFirstDeliveryDate();
            $gacFormData['Created By'] = $gacForm->getCreatedBy();

            switch ($gacFormData['Created By']) {
                case 2:
                    $gacFormData['Created By'] = 'Admin';
                    break;
                case 4:
                    $gacFormData['Created By'] = 'Joana';
            }

            $gacFormSave[] = $gacFormData;
        }


        return $gacFormSave;
    }


Ik heb op internet en op allerlei verschillende forums gezocht, maar helaas, over Pimcore is eigenlijk niet zoveel er over te vinden.

Beste antwoord (via Ralfefernandes op 06-10-2022 11:54)


  • Cartman!
  • Registratie: April 2000
  • Niet online
Als ik even kijk in de source code zie ik gewoon her en der dit terugkomen:

code:
1
$user = \Pimcore\Model\User::getById($userId);


Dat doet toch exact wat je nodig hebt?

-
Je voorbeeld over Laravel is ook totaal iets anders, dat gaat over de huidige ingelogde user.

edit: eenmalig een listing van alle users ophalen en daarna hergebruiken ipv in de loop de users laden:
code:
1
2
3
$list = new \Pimcore\Model\User\Listing();
$list->load();
$userList = $list->getUsers();


Vraag me wel af hoeveel moeite je gedaan hebt want zonder bekend te zijn met Pimcore is dit in een paar minuten wel te vinden door even door de codebase te bladeren.

[ Voor 40% gewijzigd door Cartman! op 25-09-2022 09:56 ]

Alle reacties


Acties:
  • 0 Henk 'm!

  • Oid
  • Registratie: November 2002
  • Niet online

Oid

Ik heb niet een direct antwoord op je vraag maar: kan je niet beter de datahub GraphQL gebruiken? https://pimcore.com/docs/data-hub/current/GraphQL/index.html

Acties:
  • 0 Henk 'm!

  • eheijnen
  • Registratie: Juli 2008
  • Niet online
Kijk hier eens eerst naar:

PHP:
1
2
3
4
5
6
7
    switch ($gacFormData['Created By']) {
        case 2:
            $gacFormData['Created By'] = 'Admin';
            break;
        case 4:
            $gacFormData['Created By'] = 'Joana';
    }


$gacFormData['Created By'] bevat schijnbaar het UserID?
En wat doe je vervolgens per case?

Wie du mir, so ich dir.


Acties:
  • 0 Henk 'm!

  • Ralfefernandes
  • Registratie: Juli 2007
  • Laatst online: 30-08-2023
eheijnen schreef op vrijdag 23 september 2022 @ 10:45:
Kijk hier eens eerst naar:

PHP:
1
2
3
4
5
6
7
    switch ($gacFormData['Created By']) {
        case 2:
            $gacFormData['Created By'] = 'Admin';
            break;
        case 4:
            $gacFormData['Created By'] = 'Joana';
    }


$gacFormData['Created By'] bevat schijnbaar het UserID?
En wat doe je vervolgens per case?
In Pimcore is voor mij zeer lastig om userid te fetchen.
In Laravel, gebruik ik bijvoorbeeld
code:
1
$id = auth()->user()->id;


Maar in Pimcore, heb ik geprobeerd om de userID te fetchen door te zoeken in
code:
1
DataObject\GAC\Listing();
Maar ook zonder success.

Per case toont hij de userName

Maar wat ik wil, is dat hij automatisch check. Want stel, als ik iets meer dan 100 users heb, dan moet ik elke keer mijn code aanpassen.

Heb je misschien een beter oplossing ?

Acties:
  • 0 Henk 'm!

  • eheijnen
  • Registratie: Juli 2008
  • Niet online
Die waarde in het switch statement van CreatedBy wat is dat voor een nummer?

Wie du mir, so ich dir.


Acties:
  • +1 Henk 'm!

  • Ralfefernandes
  • Registratie: Juli 2007
  • Laatst online: 30-08-2023
Oid schreef op vrijdag 23 september 2022 @ 09:47:
Ik heb niet een direct antwoord op je vraag maar: kan je niet beter de datahub GraphQL gebruiken? https://pimcore.com/docs/data-hub/current/GraphQL/index.html
Voor Community Edition, heeft Pimcore de mogelijkhiden uitgeschakeld om json en csv file to exporteren via GraphQL.

Dit is alleen mogelijk in Enterprise Edition.

Maar ik ga opnieuw kijken of dit ook mogelijk is.

Acties:
  • 0 Henk 'm!

  • Oid
  • Registratie: November 2002
  • Niet online

Oid

aah oké dat wist ik niet :-)
maar zoiets als in het voorbeeld kan je dus niet met de communitie editie:

Afbeeldingslocatie: https://pimcore.com/docs/data-hub/current/img/graphql/iexplorer.png

Edit:
Denk dat ik snap wat je bedoelt, in je data heb je een json of csv zitten en die wil je meenemen. Check.

Succes!

[ Voor 25% gewijzigd door Oid op 23-09-2022 11:36 ]


Acties:
  • 0 Henk 'm!

  • Ralfefernandes
  • Registratie: Juli 2007
  • Laatst online: 30-08-2023
eheijnen schreef op vrijdag 23 september 2022 @ 11:14:
Die waarde in het switch statement van CreatedBy wat is dat voor een nummer?
Ik heb even snel dd() gedaan en hier is de code.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
  "Finished Product" => true
  "Sync Force Project" => "kjdfksjhsdkjhf"
  "Sync Force Project Description" => "New Candlwwkjw SKjsdkjsd"
  "First Delivery Date" => Carbon\Carbon @1658872800 {#1028
    #endOfTime: false
    #startOfTime: false
    #constructedObjectId: "00000000000004040000000000000000"

    #dumpProperties: array:3 [
      0 => "date"
      1 => "timezone_type"
      2 => "timezone"
    ]
    #dumpLocale: null
    #dumpDateProperties: null
    date: 2022-07-27 00:00:00.0 Europe/Berlin (+02:00)
  }
  "Created By" => "4"
]


de waarde van de gebruiker dat het formulier heeft aangemaakt.

Ik wil deze waarden vergelijken met de username uit de database, helaas. Is mijn tot dusver niet gelukt

Acties:
  • 0 Henk 'm!

  • Ralfefernandes
  • Registratie: Juli 2007
  • Laatst online: 30-08-2023
Oid schreef op vrijdag 23 september 2022 @ 11:31:
aah oké dat wist ik niet :-)
maar zoiets als in het voorbeeld kan je dus niet met de communitie editie:

[Afbeelding]
Dit kan je wel zien, maar je kan niet bewaren of ergens anders exporteren. Maar exporteren en importeren, zover ik het weet, is niet meer mogelijk voor Community Edition. voorheen kon je met een druk op de knop, de data exporteren/importeren. Sinds versie 10 niet meer.

Acties:
  • 0 Henk 'm!

  • Ralfefernandes
  • Registratie: Juli 2007
  • Laatst online: 30-08-2023
Oid schreef op vrijdag 23 september 2022 @ 11:31:
aah oké dat wist ik niet :-)
maar zoiets als in het voorbeeld kan je dus niet met de communitie editie:

[Afbeelding]

Edit:
Denk dat ik snap wat je bedoelt, in je data heb je een json of csv zitten en die wil je meenemen. Check.

Succes!
Precies :) :)

Acties:
  • 0 Henk 'm!

  • eheijnen
  • Registratie: Juli 2008
  • Niet online
Je kunt die username niet via de pimcore php api opvragen?

Zo ja:
Kun je dat wel via een eigen sql query ophalen uit mariadb?

Wie du mir, so ich dir.


Acties:
  • 0 Henk 'm!

Verwijderd

Als het symfony is, onderwater dan kun je ook authservice injecteren en van daaruit de auth-getid verkrijgen...

Acties:
  • Beste antwoord
  • +1 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Als ik even kijk in de source code zie ik gewoon her en der dit terugkomen:

code:
1
$user = \Pimcore\Model\User::getById($userId);


Dat doet toch exact wat je nodig hebt?

-
Je voorbeeld over Laravel is ook totaal iets anders, dat gaat over de huidige ingelogde user.

edit: eenmalig een listing van alle users ophalen en daarna hergebruiken ipv in de loop de users laden:
code:
1
2
3
$list = new \Pimcore\Model\User\Listing();
$list->load();
$userList = $list->getUsers();


Vraag me wel af hoeveel moeite je gedaan hebt want zonder bekend te zijn met Pimcore is dit in een paar minuten wel te vinden door even door de codebase te bladeren.

[ Voor 40% gewijzigd door Cartman! op 25-09-2022 09:56 ]

Pagina: 1