Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Kohana, ORM, zapis znaków specjalnych
in5ane
post 4.09.2014, 08:14:46
Post #1





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


Cześć. Jak w Kohana 3.3 zapisywać poprzez ORM znaki specjalne, jak:
Kod
" ' . - _ ,


Wszystkie te znaki mi wywala i treść po nich.

Ten post edytował in5ane 4.09.2014, 08:18:09


--------------------
> > > Tworzenie stron < < <
Go to the top of the page
+Quote Post
Damonsson
post 4.09.2014, 08:20:41
Post #2





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

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


Musiałeś sam coś dopisać, żeby je wywalało, domyślnie nie ma takiego problemu.
Go to the top of the page
+Quote Post
in5ane
post 4.09.2014, 08:22:04
Post #3





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


Tak wygląda moja metoda:
  1. public function action_settings()
  2. {
  3. $user = Auth::instance()->get_user();
  4.  
  5. if ($_POST)
  6. {
  7. $password = $this->request->post('password');
  8. $password_c = $this->request->post('password_c');
  9. $email = $this->request->post('email');
  10. $company_telephone = $this->request->post('company_telephone');
  11.  
  12. if (!empty($password) && !empty($password_c))
  13. {
  14. if ($password != $password_c)
  15. {
  16. $errors[] = 'Wpisane hasłą różnią się.';
  17. }
  18. }
  19.  
  20. if (empty($email))
  21. {
  22. $errors[] = 'E-mail nie może być pusty.';
  23. }
  24. elseif (!filter_var($email, FILTER_VALIDATE_EMAIL))
  25. {
  26. $errors[] = 'Podany adres e-mail nie jest poprawny.';
  27. }
  28.  
  29. if (empty($company_telephone))
  30. {
  31. $errors[] = 'Telefon nie może być pusty.';
  32. }
  33.  
  34. if (empty($errors))
  35. {
  36. $editUser = ORM::factory('User')->where('id', '=', $user->id)->find();
  37. if (!empty($password) && !empty($password_c))
  38. {
  39. $editUser->password = $password;
  40. }
  41.  
  42. $editUser->email = $email;
  43. $editUser->company_short_name = $this->request->post('company_short_name');
  44. $editUser->company_name = $this->request->post('company_name');
  45. $editUser->company_address = $this->request->post('company_address');
  46. $editUser->company_postcode = $this->request->post('company_postcode');
  47. $editUser->company_city = $this->request->post('company_city');
  48. $editUser->company_nip = $this->request->post('company_nip');
  49. $editUser->company_telephone = $company_telephone;
  50. $editUser->company_fax = $this->request->post('company_fax');
  51. $editUser->save();
  52.  
  53. Flash::success('Dane poprawnie zaktualizowano.');
  54. Request::current()->redirect('account/settings');
  55. }
  56. else
  57. {
  58. foreach ($errors as $error)
  59. {
  60. Flash::warning($error);
  61. }
  62.  
  63. Request::current()->redirect('account/settings');
  64. }
  65. }
  66.  
  67. $this->render();
  68. }


--------------------
> > > Tworzenie stron < < <
Go to the top of the page
+Quote Post
Damonsson
post 4.09.2014, 08:25:22
Post #4





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

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


Tu jest ok, może w Model_User?
Go to the top of the page
+Quote Post
in5ane
post 4.09.2014, 08:26:05
Post #5





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


W sumie to nie mam Model_User klasycznego, to jest ten Kohanowy.


--------------------
> > > Tworzenie stron < < <
Go to the top of the page
+Quote Post
phpion
post 4.09.2014, 08:27:27
Post #6





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




W modelu User nie masz przypadkiem ustawionych żadnych filtrów, które powodowałyby takie zamieszanie?

Jeszcze możesz sobie sprawdzić to w taki sposób (przykład dla jednego pola):
  1. $editUser->company_fax = $this->request->post('company_fax');
  2. var_dump($this->request->post('company_fax'));
  3. var_dump($editUser->company_fax);
  4. $editUser->save();
  5. var_dump($editUser->company_fax);

Jako company_fax podstaw to pole, w którym ucina Ci wartość.

PS: Dlaczego nie korzystasz z kohanowej walidacji tylko wszystkie "regułki" klepiesz z palca w postaci if'ów?
Go to the top of the page
+Quote Post
in5ane
post 4.09.2014, 08:32:14
Post #7





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


Zwraca poprawnie:
Kod
string(10) "asd "test""
string(10) "asd "test""
string(10) "asd "test""


--------------------
> > > Tworzenie stron < < <
Go to the top of the page
+Quote Post
phpion
post 4.09.2014, 08:35:14
Post #8





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




No to w takim razie gdzie Ci ucina? smile.gif Z formularza przychodzą poprawne dane, przed zapisem są poprawne, po zapisie też. Jeszcze dla pewności możesz zrobić ->reload() po zapisie i dopiero wówczas zrobić ostatniego var_dumpa.
Go to the top of the page
+Quote Post
in5ane
post 4.09.2014, 08:36:56
Post #9





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


Kurcze, dalej poprawnie:
Kod
string(10) "asd "test""
string(10) "asd "test""
string(10) "asd "test""
string(10) "asd "test""


@edit: w bazie jest poprawnie zapisane, teraz tak patrzę. Czyżby coś z odczytem?

Ten post edytował in5ane 4.09.2014, 08:37:18


--------------------
> > > Tworzenie stron < < <
Go to the top of the page
+Quote Post
phpion
post 4.09.2014, 08:42:10
Post #10





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




No to pokaż jak to wyświetlasz bo (jak sam napisałeś) zapis przebiega prawidłowo.
Go to the top of the page
+Quote Post
in5ane
post 4.09.2014, 08:42:23
Post #11





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


Dziwne, bo coś takiego:
  1. <?=$user->company_fax?>
wyświetla poprawnie asd "test". Zaś coś takiego:
  1. <input type="text" name="company_fax" value="<?=$user->company_fax?>" />
wyświetla tylko asd.

Ten post edytował in5ane 4.09.2014, 08:43:10


--------------------
> > > Tworzenie stron < < <
Go to the top of the page
+Quote Post
phpion
post 4.09.2014, 08:43:31
Post #12





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




:| no bo zobacz co masz w źródle strony! Ucina Ci po pierwszym " bo traktuje to jako zamykanie atrybutu value. Korzystaj z helperów (Form::input) a unikniesz tego typu wpadek.
Go to the top of the page
+Quote Post
in5ane
post 4.09.2014, 08:44:47
Post #13





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


Boże, rzeczywiście. Jaki umysł dziś niechłonny. Dzięki.


--------------------
> > > Tworzenie stron < < <
Go to the top of the page
+Quote Post

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: 12.06.2025 - 13:46