Jump to content
php.lv forumi
Sign in to follow this  
laucinieks

CI Form validation

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="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 by laucinieks

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
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

Share this post


Link to post
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

Share this post


Link to post
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

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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!

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  

×
×
  • Create New...