Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] MVC dobre praktyki - Code igniter
-pr4ktykant-
post 26.02.2014, 10:56:34
Post #1





Goście







Mam formularz który dodaje rekordy do bazy. W nim prawie 80 pól z których każde jest inne więc trzeba je ponazywać, dopisać do widoku i umieścić jeszcze w widoku edycji. Sam plik ma ponad 1 000 linijek i gdy próbuję coś zmienić muszę edytować na raz 2 pliki (dodawanie i edycja). Myślę więc jak to powinno się najlepiej rozwiązać. Zrobić jeden widok dla dodawania i edycji i w nim warunki czy zostawić to tak jak jest ?
Gdybym miał drugi widok musiałbym
* zrobić tablice z pustymi wartościami z wszystkich pól które będą zapisane (żeby nie wywaliło w widoku że zmienna nie istnieje)
* zrobić warunki na akcje formularza (add/edit) oraz na submit formularza (dodaj/zapisz zmiany)
tylko czy to jest dobry pomysł takie faszerowanie widoku pustymi zmiennymi oraz warunkami ? Niby bym miał łatwiej ale plik będzie bardziej zamotany chyba. Jak wy to robicie dla takich dużych formularzy ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
markuz
post 26.02.2014, 12:17:01
Post #2





Grupa: Zarejestrowani
Postów: 1 240
Pomógł: 278
Dołączył: 11.03.2008

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


  1. # Przykładowy kontroler
  2.  
  3. class TestController extends CI_Controller {
  4.  
  5. private $fields = array(
  6. 'label' => 'Nazwa',
  7. 'field' => 'name',
  8. 'rules' => 'required|trim|xss_clean',
  9. 'value' => NULL,
  10. 'type' => 'input'
  11. ),
  12. 'label' => 'Lokalizacja tekstu?',
  13. 'field' => 'location_text',
  14. 'rules' => 'required|trim|xss_clean',
  15. 'value' => NULL,
  16. 'type' => 'textarea'
  17. ),
  18. 'label' => 'Is comm',
  19. 'field' => 'is_comm',
  20. 'rules' => 'required|trim|xss_clean',
  21. 'value' => NULL,
  22. 'type' => 'checkbox'
  23. ),
  24. );
  25.  
  26. public function add()
  27. {
  28. foreach($this->fields as $field)
  29. {
  30. $this->form_validation->set_rules($field['label'], $field['field'], $field['rules']);
  31. }
  32.  
  33. if($this->form_validation->run() == TRUE)
  34. {
  35. foreach($this->fields as $key => $field)
  36. {
  37. $this->fields[$key]['value'] = $this->input->post($field['field']);
  38. }
  39.  
  40. $this->ExampleModel->insert($this->fields);
  41. }
  42.  
  43. $this->load->view('add', array(
  44. 'fields' => $this->fields,
  45. ));
  46. }
  47.  
  48. public function edit($id)
  49. {
  50. foreach($this->fields as $field)
  51. {
  52. $this->form_validation->set_rules($field['label'], $field['field'], $field['rules']);
  53. }
  54.  
  55. if($this->form_validation->run() == TRUE)
  56. {
  57. foreach($this->fields as $key => $field)
  58. {
  59. $this->fields[$key]['value'] = $this->input->post($field['field']);
  60. }
  61.  
  62. $this->ExampleModel->update($this->fields, $id);
  63. }
  64.  
  65. $this->load->view('update', array(
  66. 'fields' => $this->fields,
  67. ));
  68. }
  69.  
  70. }
  71.  
  72. # Widok add.php
  73.  
  74. foreach($fields as $field)
  75. {
  76. switch($field['type'])
  77. {
  78. case 'textarea':
  79. echo form_textarea($field['field'], set_value($field['field']));
  80. break;
  81.  
  82. case 'checkbox':
  83. echo form_checkbox($field['field'], set_value($field['field']));
  84. break;
  85.  
  86. default:
  87. echo form_input($field['field'], set_value($field['field']));
  88. break;
  89. }
  90.  
  91. }
  92. echo form_submit('submit');
  93.  
  94. # Widok edit.php
  95.  
  96. foreach($fields as $field)
  97. {
  98. switch($field['type'])
  99. {
  100. case 'textarea':
  101. echo form_textarea($field['field'], set_value($field['field'], $field['value']));
  102. break;
  103.  
  104. case 'checkbox':
  105. echo form_checkbox($field['field'], set_value($field['field'], $field['value']));
  106. break;
  107.  
  108. default:
  109. echo form_input($field['field'], set_value($field['field'], $field['value']));
  110. break;
  111. }
  112. }
  113. echo form_submit('submit');


CI to bardzo oporny framework, pracuję na nim już od 2 lat i czasami trzeba wymyśleć coś po swojemu żeby sobie zaoszczędzić pracy. Nie wiem czy kod jest prawidłowy bo pisałem z palca i nie sprawdzałem aczkolwiek myślę, że ogólny sens zrozumiałeś wink.gif


--------------------
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 - 16:57