สงสัยเกี่ยวกับการตรวจสอบค่าซ้ำในฟอร์มด้วย jquery ใช้โครงสร้างแบบ mvc
คือว่าผมเริ่มศึกษาเกี่ยวกับโครงสร้างแบบ mvc ผมดูจากของ jream น่ะครับ
หัดทำมาเรื่อยๆ ตอนนี้เริ่มศึกษาเอา jquery validate มาใช้ในการตรวจสอบฟอร์ม
ผมไม่เข้าใจว่า
-มีฟอร์มอันนึง
<form method="post" action="<?php echo URL;?>register/create" autocomplete="off" id="frmRegister">
<label>Name</label><input type="text" name="name" placeholder="Name input" id="name"/><br />
<label>Surname</label><input type="text" name="surname" placeholder="Surname input" id="surname"/><br />
<label>Gender</label>
<select name ="gender" id="gender">
<option value="male">Male</option>
<option value="female">Female</option>
</select><br />
<label>Email</label><input type="text" name="email" placeholder="Email input" id="email"/><br />
<label>Login</label><input type="text" name="login" placeholder="Login input" id="login"/><br />
<label>Password</label><input type="password" name="password" placeholder="Password Input" id="password"/><br />
<label>Verify Password</label><input type="password" name="verify" placeholder="Verify Input" id="verify"/><br />
<label>Role</label>
<select name="role">
<option value="default">Default</option>
<option value="admin">Admin</option>
</select><br />
<label> </label><input type="submit"/>
</form>
-มีไฟล์ .js เขียนสคริปต์ตรวจสอบ textbox
<script>
$(function(){
$('#frmRegister').validate({
rules: {
name:{ required:true },
surname:{ required:true },
email:{ required:true, email:true, remote:'register/create' },
login:{ required:true, minlength:4, remote:'register/create' },
password:{ required:true, minlength:8 },
verify:{ required:true, equalTo:'#verify' }
},
});
});
</script>
-ตอนจะตรวจสอบค่าซ้ำ ต้องใช้คำสั่ง remote:"ชื่อไฟล์.php"
-ในไฟล์.php นั้นก็จะselect ข้อมูลมาตรวจสอบว่าซ้ำหรือไม่ แล้วส่งค่ากลับไปบอก
- url ในการส่งค่าคือ ?ชื่อฟิลด์=พารามิเตอร์&ชื่อฟิลด์2=พารามิเตอร์2
-แต่ว่าในแบบ mvc มันทำงานกับ url แบบ /ชื่อฟังก์ชั่น/พารามิเตอร์1/พารามิเตอร์2
-ใน controller บอกให้ตรวจสอบค่าตรงนี้แหละ
<php
public function create() {
$data = array();
$data['mbName'] = $_POST['name'];
$data['mbSurname'] = $_POST['surname'];
$data['mbGender'] = $_POST['gender'];
$data['mbEmail'] = $_POST['email'];
$data['mbLogin'] = $_POST['login'];
$data['mbPassword'] = $_POST['password'];
//@TODO: Do your error checking!
$this->model->create($data);
header('location: ' . URL . 'register');
}
?>
-หรืออันที่จริงเขาไม่ได้ใช้ jquery? หรือว่าเขามีวิธีเขียนแบบ mvc อยุ่แล้ว?
มีท่านใดเข้าใจระบบแบบนี้บ้างไหมครับ ช่วยชี้แนะทีครับ
ขออนุญาติใช้พื้นที่ไทยครีเอท ขอบคุณทุกคำตอบครับTag : PHP, jQuery
Date :
2013-10-02 01:28:56
By :
ง่วงจริงๆนะ
View :
1270
Reply :
2
ต้องดูว่า .validate() ทำงานยังไงคับ
ถ้าเป็นไปตาม พารามิเตอร์นั้นก็น่าจะเป็น $_GET ไม่ใช่เหรอ
จริงๆ แล้วผมไม่แน่ใจว่าคุณไม่เข้าใจตรงไหน หรือกำลังถามถึงอะไร
ดูตรงนี้คับ
//@TODO: Do your error checking!
$this->model->create($data);
header('location: ' . URL . 'register');
นี่ คือการทดสอบ ผมคิดว่าประมาณนี้
ถ้าไม่ผ่านก็แสดง error ถ้าผ่านก็จะใช้ create() แล้วไปแสดงอีก action นึงตาม route ใน header()
ลองอ่านตรงนี้คับ
The serverside resource is called via jQuery.ajax (XMLHttpRequest) and gets a key/value pair corresponding to the name of the validated element and its value as a GET parameter. The response is evaluated as JSON and must be true for valid elements, and can be any false, undefined or null for invalid elements, using the default message; or a string, eg. "That name is already taken, try peter123 instead" to display as the error message.
http://jqueryvalidation.org/remote-method
สรุป รับค่าแบบ GET คืนค่าเป็น json ค่าไหนผ่านให้ true ไม่ผ่านก็ false หรือค่าว่างหรือ undefined หรือ string error message
ผมก็ไม่เคยใช้นะ ลองดูๆ
ประวัติการแก้ไข 2013-10-02 08:11:08 2013-10-02 08:18:31 2013-10-02 08:21:15 2013-10-02 08:31:53
Date :
2013-10-02 08:08:59
By :
pjgunner.com
Load balance : Server 01