วันอาทิตย์ที่ 23 กุมภาพันธ์ พ.ศ. 2557

CSS กับการตัดคำจากประโยค

      บทความนี้จะสอนใช้คำสั่งสำคัญของ CSS ที่ผมเพิ่งรู้มาไม่นานนี่เองครับ นึกไม่ถึงว่าการตัดคำหรือตัดข้อความในประโยคจะต้องใช้ในภาษาเซิร์ฟเวอร์ อย่างเช่น PHP หรือ JSP อย่างเดียวซะอีก CSS ก็ทำได้ครับ แต่ยังมีข้อจำกัดอยู่ ซึ่งก็คือ ตัดตามความกว้างของ Tag HTML ที่เรากำหนดเท่านั้น และทำงานเพียงบรรทัดเดียวเท่านั้น เช่น เรากำหนดขนาดของ Tag H1 ให้กว้าง 100px (width:100px) ถ้าข้อความยาวเกินขนาดที่กำหนดคือ 100px มันจะตัดคำที่เกินนั้นออกไป ความจริงแล้วจะเรียกว่า ซ่อนคำมากว่า เพราะพอผมลอง View Code ของเว็บไซต์ดูแล้ว ข้อความยังอยู่ครบครับ เหมือนกับว่าคำที่เกินขนาดนั้นถูกซ่อนเอาไว้ไม่ให้มองเห็นผ่าน Web Browser เท่านั้นเอง ทำให้ไม่มีผลกระทบต่อ SEO เลย เพราะ Google ยังมองเห็นเป็นประโยคเต็มทั้งหมดครับ

     เราจะใช้คำสั่ง 3 คำสั่งควบคู่กันครับ คือ white-space:nowrap,text-overflow:ellipsis และ overflow:hidden เช่น
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>CSS กับการตัดคำจากประโยค</title>
</head>
<body>
<h1 style="width:100px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;font-size:12px;">
นี่คือข้อความที่ถูกคำสั่ง CSS ตัดคำตามขนาดความกว้างของ Tag HTML ที่เรากำหนด</h1>
</body>
</html>

จะได้ผลลัพธ์ดังนี้ครับ
     ข้อความจะถูกตัดตามขนาดของ Tag H1 ที่ผมกำหนดขนาดความกว้างเป็น 100 พิกเซล นั้นเองครับ นอกจากนี้เราสามารถเปลี่ยน Tag H1 เป็น Tag HTML อื่นก็ได้ เช่น div,p,span,h2,h3 เป็นต้น

วันจันทร์ที่ 10 กุมภาพันธ์ พ.ศ. 2557

การสร้าง Form ใน Yii Framework

     คราวนี้เราจะกลับไปในส่วนของ views ของ Yii Framework (PHP Framework) อีกครั้งครับ ซึ่งเป็นส่วนแสดงผลและส่วน GUI ของ Web Application ของเราครับ
ดังนั้นเราจะต้องสร้างส่วนโต้ตอบกับผู้ใช้งาน เราจะต้องสร้างช่องกรอกข้อมุล textfield,texarea , ปุ่มบันทึกข้อมูล ,เช็กบ๊อก,ลิสต์เมนู (Select/List Menu) ฯลฯ ได้จากตรงส่วนนี้ครับ
     บทความนี้ผมจึงอยากจะสอนการสร้างแท็กคอนโทรลต่างๆ โดยจะเรียกใช้ widget CActiveForm ซึ่งถูก Extend จากคลาส CHtml อีกที

1.การสร้าง form จากคลาส CActiveForm โดยเราจะเรียกผ่าน beginWidget ด้วยคำสั่งเช่น

<?php $form = $this->beginWidget('CActiveForm', array(
'id'=>'user-form',
'enableAjaxValidation'=>true,
'enableClientValidation'=>true,
'focus'=>array($model,'firstName'),
'clientOptions' => array('validateOnSubmit' => true),
'htmlOptions' => array(
'enctype' => 'multipart/form-data',
)
)); ?>


user-form คือแอททิบิว id ของ แท็ก form เราสามารถกำหนดชื่อได้จากตรงนี้
enableAjaxValidation คือการตรวจสอบข้อมูลแบบ AJAX ซึ่งจะมีประโยชน์ตอนที่เราต้องการตรวจสอบข้อมูลบางอย่างที่ต้องพึ่่งการประมวลจาก Server โดยไม่ต้องการให้หน้าเว็บไซต์รีเฟรช เช่น การตรวจสอบรหัส Captcha,Username หรือ Email เพื่อป้องกันการซ้ำกันของข้อมูล เป็นต้น เราจะใช้ true หรือ false เพื่อเปิดหรือปิดการทำงาน
enableClientValidation คือการตรวจสอบข้อมูลจากฝั่ง Client หรือพูดง่ายๆคือใช้ Javascript ตรวจสอบนั้นเอง สำหรับตรวจสอบข้อมูลแบบง่ายๆ โดยที่ไม่จำเป็นต้องส่งไปให้ Server หรือ Host ตรวจสอบ เช่น เช็คช่องว่างของ textfield,ตรวจสอบจำนวนข้อมูลว่ากรอกสั้นหรือยาวเกินไปหรือป่าว เป็นต้นเราจะใช้ true หรือ false เพื่อเปิดหรือปิดการทำงานเช่นกัน
focus คือจุดที่เคอร์เซอร์ (Cursor) แสดงจุดแรกในขณะเว็บถูกโหลดเสร็จ เราจะเรียกว่า จุดโฟกัส นั่นเองครับ จากตัวอย่าง เราจะส่งตัวแปร $model ซึ่งจะถูก render จาก controller และ firstName คือชื่อของ textfield ที่เราจะโฟกัส
clientOptions คือการกำหนดการทำงานบางอย่างในส่วนของ Client เช่น validateOnSubmit' => true หมายถึงให้ตรวจสอบข้อมูลในขณะที่กดปุ่ม submit
htmlOptions คือการกำหนดการทำงานของแท็ก form ว่าให้สามารถส่งค่าอะไรได้บ้าง เช่น 'enctype' => 'multipart/form-data' หมายถึงสามารถส่งข้อมูลจำพวกไฟล์ต่างๆ เพื่อสามารถอัปโหลดไปไว้บน server ได้