Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Kohana] Pobranie id z rekordu?
Pytajka
post 17.05.2012, 20:36:36
Post #1





Grupa: Zarejestrowani
Postów: 60
Pomógł: 0
Dołączył: 6.09.2011

Ostrzeżenie: (0%)
-----


Witam,

mam metodę odpowiedzialną za aktywację użytkowników i napotkałem pewien problem, a raczej chęć najlepszego rozwiązania.

Metody aktualnie wygląda tak,

  1. public function action_confirm(){
  2.  
  3. $id = $this->request->param('id');
  4.  
  5. $this->active = ORM::factory('active');
  6.  
  7. $this->check = $this->active->where('key', '=', $id)->find_all();
  8.  
  9. if( $this->check->count_all() > '0'){
  10.  
  11. $role = new Model_Role( array('name' => 'login'));
  12.  
  13. $this->user = ORM::factory('user', $this->user->id);
  14.  
  15. $this->user->add('roles', $role);
  16.  
  17. }
  18. else
  19. {
  20.  
  21. $this->request->redirect('index');
  22.  
  23. }
  24.  
  25. }


Przy wywołaniu ORM muszę podać id użytkownika, id znajduje się w pobranym rekordzie, jednak nie wiem jak najłatwiej się do niego odwołać, nie używając foreach.

  1. $this->user = ORM::factory('user', $this->user->id); // chodzi mi o ten fragment.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
BlackDante
post 18.05.2012, 15:03:23
Post #2





Grupa: Zarejestrowani
Postów: 35
Pomógł: 6
Dołączył: 20.06.2009

Ostrzeżenie: (0%)
-----


  1. $id = $this->request->param('id');


Jeżeli to jest klucz aktywujący to polecałbym nad przemyśleniem Routingu aplikacji, tak aby zmienne GET nie były myląco nazwane .

  1. $this->check = $this->active->where('key', '=', $id)->find_all();


Czy w Twojej aplikacji więcej niż jeden użytkownik może mieć ten sam klucz aktywacyjny ? Według mnie to jest trochę bez sensu, ponieważ wystarczy że jeden z tych wszystkich użytkowników aktywuje konto, a wszyscy pozostali dostaną za darmo aktywację wraz z nim.

Według mnie idealnym rozwiązaniem byłoby coś takiego:

  1. public function action_activate()
  2. {
  3. $activate_key = $this->request->param('activate_key');
  4. $active_rekord = ORM::factory('active',array('key' = $activate_key));
  5. if($active_rekord->loaded())
  6. {
  7. $role = new Model_Role( array('name' => 'login'));
  8. $user = ORM::factory('user', $active_rekord->user_id);
  9. $user->add('roles', $role);
  10. }
  11. else
  12. {
  13. die("This key doesn't exist");
  14. }
  15. }


Czyli każdy użytkownik dostaje swój unikalny klucz aktywujący, wszystko staje się wtedy o wiele prostsze wink.gif

Ten post edytował BlackDante 18.05.2012, 15:04:56
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 18:20