laucinieks Posted November 11, 2011 Report Posted November 11, 2011 (edited) Sveiki, tātad ir forma - <form method="post" action=""> <table> <tr> <th><span>Login</span></th> <td><input type="text" name="username" placeholder="Login"></td> </tr><tr> <th><span>Password</span></th> <td><input type="password" name="password" placeholder="********"></td> </tr><tr> <th><span>E-mail</span></th> <td><input type="text" name="email" placeholder="info@email.com"></td> </tr><?php echo form_error('email'); ?><tr> <th><span>Display Name</span></th> <td><input type="text" name="displayName" placeholder="Display Name"></td> </tr> <td> </td> <td><input type="submit" value="Registrate" name="registrate"></td> </table> </form> Un controller kods - $this->load->library('Form_Validation'); $this->load->view('index'); $this->load->model('personalPanel'); if(isset($_POST['registrate'])) { $rules = array( array( 'field' => 'username', 'rules' => 'required|min_length[5]|max_length[20]' ), array( 'field' => 'password', 'rules' => 'required|min_length[8]|max_length[20]' ), array( 'field' => 'email', 'rules' => 'required|valid_email' ), array( 'field' => 'displayName', 'rules' => 'required|min_lenth[5]|max_length[20]' ) ); $this->form_validation->set_rules($rules); if($this->form_validation->run() == FALSE) { $this->form_validation->set_message(array('email' => 'Your email is not valid')); } else { $this->personalPanel->register_users($_POST['username'], $_POST['password'], $_POST['email'], $_POST['displayName']); } } Tātad - 1) Pirmais jautājums ir tāds visa validācija strādā perfekti, bet vai labāk formas taisīt ar CI iebūvēto formu veidošanas funkciju, vai pašam ar html rakstīt? 2) Vai isset($_POST['submit']) lietošana ir pareiza, vai CI piedāvā citu, efektīvāku? 3) Kā lai izvada pie nepareiza aizpildīta lauka error message, galvenā problēma šeit varētu būt tā, ka man reģistrācija ir popup lodziņā, bet praktiski tam nevajadzētu neko daudz mainīt. Izvadot ar (<?php echo form_error('email'); ?>) nekas netiek izvadīts. Būšu pateicīgs par palīdzību. L. Edited November 11, 2011 by laucinieks
Raimonds Posted November 11, 2011 Report Posted November 11, 2011 Pirmais, view ielādei teorētiski vajadzētu būt pašā apakšā. Form_validation klase strādā ļoti labi, bet $_POST vietā lieto $this->input klasi, kas ir ielādēta by deafault. Tur visi mainīgie ir automātiski uztaisīti muļķu droši.
daGrevis Posted November 12, 2011 Report Posted November 12, 2011 Kāpēc skatu vajag ielādēt (nevis renderēt, bet ielādēt) pašā apakšā? Standarta situācija: load view; assign x to view; render view; Tavā gadījumā: assign x to y; load view; assign y to view; render view; Jebkurā gadījumā, man liekas ērtāk, ka 'pa taisno' var padot mainīgos uz skatu, nevis jāveido lieks, jauns mainīgais. Okay, nevermind... :D
laucinieks Posted November 12, 2011 Author Report Posted November 12, 2011 (edited) Hmm, Tas nostrādāja, bet tagad gribu smuki sadalīt visus kontrollierus pa failiņiem. Sāksim ar to, ka pieņemsim viss kas saistīts ar personīgo paneli (reģistrācija, login, personīgais panelis) stāv iekš kontrolliera persPanel.php, Uztaisot - class persPanel extends parent_kontroliera_nosaukums { ... } Nekādi errori neuzmetās, bet neviena no controlliera funkcijām kas ir starp bracketiem nenostrādā. Iespējams vajag kontrolliera funkcijas izsaukt iekš parent controlliera, bet nevaru atrast kā to izdarīt, tāpēc ja nu variet tad izpalīdziet ;)! L. Edit: eh, ak es jocīgais... Visu atradu. L. Edited November 12, 2011 by laucinieks
laucinieks Posted November 12, 2011 Author Report Posted November 12, 2011 Hmm, tomēr man kaut kas neaiziet - 1) Tātad par to pašu jaut. pieņemsim man ir persPanel controller, kurš sastāv no modeļa (kas inserto datubāzē datus) un funkcijas, kas pārbauda vai input lauki ir valīdi. Mana lapa turas uz controlliera indexPage, kas ielādē galveno skatu. Reģistrēšana man ir tajā pašā galvenā skatā, bet popup logā (neko daudz nevajadzētu mainīt tam). Kā, lai dabū, lai controllieris persPanel strādātu uzspiežot register pogu? Ja es eju caur http://manalapasadrese/persPanel'>http://manalapasadrese/persPanel un reģistrējos tad viss strādā bet ja vienkārši caur http://manalapasadrese/ tad nekas neiet, jo persPanel controllieris nav ielādēts. Kādi ieteikumi? L
laucinieks Posted November 12, 2011 Author Report Posted November 12, 2011 Kā defaulto controllieri uzlikt māku, un ar to nav problēmas, bet jautājums ir pavisam par citu lietu. Iespējams arī tavu domu neesmu īsti sapratis. L.
Turecky Posted November 29, 2011 Report Posted November 29, 2011 Ja neesmu neko sajaucis, tad gadījumā, ja nav uzstādīts DEFAULT CONTROLLER iesitot http://localhost/ arī neko neielādēs. Iebakstam pie routes default_controller kas tiks izsaukts ievadodt http://localhost/ Ja nu vienalga nestrādā, tad liekas, ka vajadzēja arī pašā kontrolierī vai nu izveidot function index() vai arī __construct funkcijā iebakstī kādu no metodēm jāizsauc. Liekas, ka kaut kā tā bija. Un ja nu vēl kas nestrādā var tak arī iekš log failiem paskatīties. Varbūt tomēr tur kādas kļūdas ar pierakstītas!
Recommended Posts