Jump to content
php.lv forumi

CI Form validation


laucinieks

Recommended Posts

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="[email protected]"></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 by laucinieks
Link to comment
Share on other sites

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

Link to comment
Share on other sites

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 by laucinieks
Link to comment
Share on other sites

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

Link to comment
Share on other sites

  • 3 weeks later...

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!

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...