Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Kohana] Rejestracja nowego użytkownika
Forum PHP.pl > Forum > PHP > Frameworki
iro88
Witam,
mam problem z zarejestrowaniem użytkownika ponieważ moduł sprawdza czy przypadkiem użytkownik o podanej nazwie już nie istnieje w bazie danych. Wszystko ok, tylko szuka nie w tej kolumnie. Moje pytanie brzmi, czy da się zmienić nazwę kolumny w której funkcja szuka danego użytkownika? Chciałbym to zrobić poprzez plik koniguracyjny w Aplication, by nie grzebać w systemowych plikach.

Póki co wywala błąd:
  1. Database_Exception [ 1054 ]: Unknown COLUMN 'username' IN 'where clause' [ SELECT `users`.* FROM `users` WHERE `username` = 'test' LIMIT 1 ]


A schemat ORM'a i bazy wygląda tak:
  1. class Model_Users extends ORM {
  2.  
  3. protected $_table_name = 'users';
  4.  
  5. protected $_primary_key = 'user_id';
  6.  
  7. public function rules()
  8. {
  9. return array(
  10. 'user_name' => array(
  11. array('not_empty'),
  12. array('max_length', array(':value', 32)),
  13. ),
  14. 'user_pass' => array(
  15. array('not_empty'),
  16. array('max_length', array(':value', 32)),
  17. ),
  18. 'user_email' => array(
  19. array('not_empty'),
  20. array('max_length', array(':value', 32)),
  21. ),
  22. );
  23. }
  24.  
  25.  
  26. // tu naiwna próba fixa
  27. protected $_table_columns = array(
  28. 'user_id' => NULL,
  29. 'user_name' => NULL,
  30. 'user_pass' => NULL,
  31. 'user_email' => NULL,);
  32.  
  33. }
pedro84
Kto Ci tak te kolumny ponazywał?

Używasz Auth?
iro88
Tak, używam modułu Auth. I jest tam funkcja:
  1. /**
  2. * Does the reverse of unique_key_exists() by triggering error if username exists.
  3. * Validation callback.
  4. *
  5. * @param Validation Validation object
  6. * @param string Field name
  7. * @return void
  8. */
  9. public function username_available(Validation $validation, $field)
  10. {
  11. if ($this->unique_key_exists($validation[$field], 'username'))
  12. {
  13. $validation->error($field, 'username_available', array($validation[$field]));
  14. }
  15. }


Wczoraj wieczorem próbowałem też zmienić linię kodu, ale nie poskutkowało:
  1. if ($this->unique_key_exists($validation[$field], 'user_name'))
matino
Musisz rozszerzyć w application/model Model_Auth_User i pozamieniać wszystkie wsytąpienia username na user_name.
Plik oczywiście nazywasz user.php.
  1. <?php
  2.  
  3. defined('SYSPATH') or die('No direct access allowed.');
  4.  
  5. class Model_User extends Model_Auth_User
  6. {
  7. }
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.