cryostar Posted June 11, 2021 Share Posted June 11, 2021 Hi all, I wanted to generate a Customer Code that I can attach to the user registered from ryan's LoginRegister module's front-end sign up. I was aiming to have something like "ABCD-XY12345678" where X and Y are the user's initials and the number is the User object's id field (formatted to 8 digits). Unfortunately, I only got "ABCD-XY00000000". Is there a way to retrieve this newly created user's ID? Here's the code from LoginRegister.module (I have added new fields to the User template: fname, lname, and customerid): $user = $users->newUser(); $fname = ''; $lname = ''; $id = sprintf('%08d',$user->id); // populate values to new user foreach($values as $key => $value) { if(strpos($key, 'register_') !== 0) continue; $key = str_replace('register_', '', $key); if($key == 'roles') continue; // don't allow this, just in case if($key != 'name' && !$user->template->fieldgroup->hasField($key)) continue; if($key == 'fname') $fname = substr($value,0,1); if($key == 'lname') $lname = substr($value,0,1); $user->set($key, $value); } $customercode = "ABCD-$fname$lname$id"; $user->set('customerid',$customercode); I did try to edit once more after the $user->save() call down the code but I was greeted with a registration error. // create the user try { $this->createUserReady($user); $user->save(); $id = sprintf('%08d',$user->id); $customercode = "ABCD-$fname$lname$id"; $user->set('customerid',$customercode); $user->save(); } catch(\Exception $e) { throw new WireException('Unable to create user'); } Link to comment Share on other sites More sharing options...
netcarver Posted June 11, 2021 Share Posted June 11, 2021 Try using the createdUser() hook as this is called after the new user is actually created, so there will actually be an ID for them. You can do this by attaching to the hook in your site/ready.php file, like this... $pages->addHookAfter("LoginRegister::createdUser", function ($event) { $new_user = $event->arguments(0); // Your code in here. }); You should be able to save the $new_user after pulling the ID and creating the customer code. Edited to add: Ah, you're using LoginRegister - not LoginRegisterPro. Fortunately they both have the same method, so I've updated the code to represent this. Link to comment Share on other sites More sharing options...
cryostar Posted June 12, 2021 Author Share Posted June 12, 2021 Thank you! I should really get myself to familiarize with hooks ? Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now