Forms & HTML

เป็นคลาสที่ใช้จัดการ Form กับ html

<a name="opening-a-form"></a> ## การเปิดฟอร์ม

ตัวอย่าง

1 {{ Form::open(array('url' => 'foo/bar')) }}
2 	//
3 {{ Form::close() }}

โดยค่าเริ่มต้นชนิดของคำร้องขอจะเป็น POST ถ้าจะเปลี่ยนก็เเค่ใส่พารามิเตอร์ไปเหมือนในตัวอย่างครับ

1 echo Form::open(array('url' => 'foo/bar', 'method' => 'put'))

สามารถกำหนดเป้าหมายของไฟล์ที่จะส่งค่าไปได้หลายรูปแบบตามตัวอย่างเลยครับ

1 echo Form::open(array('route' => 'route.name'))
2 
3 echo Form::open(array('action' => 'Controller@method'))

จะกำหนดพารามิเตอร์โดยเฉพาะเลยก็ตามตัวอย่างครับ:

1 echo Form::open(array('route' => array('route.name', $user->id)))
2 
3 echo Form::open(array('action' => array('Controller@method', $user->id)))

ถ้าจะสร้างฟอร์มมาอัพโหลดไฟล์ก็ต้องตั้งค่าแบบตัวอย่างครับ files

1 echo Form::open(array('url' => 'foo/bar', 'files' => true))

<a name="csrf-protection"></a> ## การป้องกัน CSRF

Laravel เตรียมการป้องกันโดยสร้างค่า hash ขึ้นจาก session ของ user แล้วสร้าง hidden form ขึ้นมาใส่ไว้ เราเพียงแต่ใช้เมทอด tokenประกาศไว้ก็เสร็จเเล้วครับ

ตัวอย่าง

1 echo Form::token();

การป้องกัน csrf จากใน route

1 Route::post('profile', array('before' => 'csrf', function()
2 {
3 	//
4 }));

<a name="form-model-binding"></a> ## การดึงค่าจากตารางมาใส่ในฟอร์ม

laravel เตรียมเมทอด Form::model มาเพื่อการนั้นครับ

ตัวอย่าง

1 echo Form::model($user, array('route' => array('user.update', $user->id)))

ถ้าชื่อของคอลัมน์ตรงกับ ชื่อของฟอร์มค่าก็จะปรากฏมาโดยอัติโนมัติ อย่างเช่นฟอร์มชื่อ email,ตรงกับโมเดลชื่อ email แต่ค่าที่จะปรากฏบนฟอร์มไม่ได้มีแค่ค่าที่มาจากโมเดลอย่างเดียว มีจาก session ค่าที่มาจากการส่งพารามิเตอร์อีก ลำดับการแสดงค่าจึงตามข้างล่างนี้ครับ 1. ค่าจาก Session (ค่าเก่าที่เกิดจาการป้อน) 2. ค่าจากการส่งพารามิเตอรื 3. ค่าจากโมเดล

ซึ่งเมื่อ server ส่งค่าการตรวจสอบค่าที่ป้อนมาว่าผิดพลาด ค่าที่ส่งมาจากโมเดลก็จะตามกลับขึ้นมาด้วย

หมายเหตุ: เมือใช้ Form::modelอย่าลืม Form::close!

<a name="labels"></a> ## การใส่ป้ายชื่อ

การใส่ป้ายชื่อให้ฟอร์ม

1 echo Form::label('email', 'E-Mail Address');

การใส่คลาสให้ฟอร์ม

1 echo Form::label('email', 'E-Mail Address', array('class' => 'awesome'));

หมายเหตุ: หลังจากใส่ค่า label ชื่อฟอร์ม ค่า id ก็จะตั้งตามค่า label โดยอัติโนมัติ.

<a name="text"></a> ## Text, Text Area, Password & Hidden Fields

ตัวอย่างฟอร์มที่ใช้รับค่า

1 echo Form::text('username');

กำหนดค่าเริ่มต้นให้ฟอร์ม

1 echo Form::text('email', 'example@gmail.com');

หมายเหตุ: hidden และ textarea ฟังก์ชันใช้งานเหมือน text เมทอด

สร้างฟอร์มรับรหัสผ่าน

1 echo Form::password('password');

สร้างฟอร์มชนิดอื่น

1 echo Form::email($name, $value = null, $attributes = array());
2 echo Form::file($name, $attributes = array());

<a name="checkboxes-and-radio-buttons"></a> ## Checkboxes and Radio Buttons

สร้างฟอร์มชนิดเลือกค่า

1 echo Form::checkbox('name', 'value');
2 
3 echo Form::radio('name', 'value');

สร้างฟอร์มชนิดเลือกค่าโดยค่าเริ่มต้นคือเลือกไว้เเล้ว

1 echo Form::checkbox('name', 'value', true);
2 
3 echo Form::radio('name', 'value', true);

<a name="file-input"></a> ## File Input

สร้างฟอร์มอัพโหลดไฟล์

1 echo Form::file('image');

<a name="drop-down-lists"></a> ## Drop-Down Lists

สร้างฟอร์มให้เลือกค่าแบบดรอบดาวน์

1 echo Form::select('size', array('L' => 'Large', 'S' => 'Small'));

สร้างฟอร์มชนิดเลือกค่าแบบดรอบดาวน์โดยค่าเริ่มต้นคือเลือกไว้เเล้ว

1 echo Form::select('size', array('L' => 'Large', 'S' => 'Small'), 'S');

แบ่งกลุ่มให้ตัวเลือก

1 echo Form::select('animal', array(
2 	'Cats' => array('leopard' => 'Leopard'),
3 	'Dogs' => array('spaniel' => 'Spaniel'),
4 ));

สร้างดรอปดาวน์แบบช่วง

1 echo Form::selectRange('number', 10, 20);

สร้างดรอปดาวน์แบบเดือน

1 echo Form::selectMonth('month')

<br /><br /><br /><br /><br /> <a name="buttons"></a> ## Buttons

สร้างปุ่มส่งค่า

1 echo Form::submit('Click Me!');

หมายเหตุ: ถ้าจะสร้างปุ่มธรรมดาก็ใช้ button

<a name="custom-macros"></a> ## Custom Macros

macro คือชุดของ html ที่เราเขียนเตรียมไว้ สามารถนำเอาไปแทรกตามใจเราได้

การสร้าง Form Macro

1 Form::macro('myField', function()
2 {
3 	return '<input type="awesome">';
4 });

เรียก Form Macro มาใช้

1 echo Form::myField();

<a name="views"></a> # Views

Views คือส่วนที่ใช้เก็บไฟล์ที่ใช้สร้างหน้า html นะครับจะถูกเก็บไว้ที่โฟลเดอร์ app/views ตัวอย่าง view

1 <!-- View stored in app/views/greeting.php -->
2 
3 <html>
4 	<body>
5 		<h1>Hello, <?php echo $name; ?></h1>
6 	</body>
7 </html>

การใช้งาน view เบื้องต้นครับ

1 Route::get('/', function()
2 {
3 	return View::make('greeting', array('name' => 'Taylor'));
4 });

ส่งค่าไปที่ view ครับ

1 $view = View::make('greeting', $data);
2 
3 $view = View::make('greeting')->with('name', 'Steve');

ในตัวอย่างตัวแปร $nameจะถูกใช้งานบน View ได้

You may also share a piece of data across all views:

1 View::share('name', 'Steve');

<br /><br /><br /><br /> การส่ง view แทรกเข้าไปในอีก view หนึ่งครับ

เราสร้างโฟลเดอร์ขึ้นมาเก็บ view ที่เราจะทำเป็น view ย่อยก่อนตัวอย่าง app/views/child/view.php ตัวอย่างการใช้งาน

1 $view = View::make('greeting')->nest('child', 'child.view');
2 
3 $view = View::make('greeting')->nest('child', 'child.view', $data);

ผลที่ออกมาครับ

1 <html>
2 	<body>
3 		<h1>Hello!</h1>
4 		<?php echo $child; ?>
5 	</body>
6 </html>

<a name="view-composers"></a> ## View Composers

View composers คือเมทอดที่ช่วยเราในการจัดการค่าที่เราต้องแสดง ในทุกหน้าของ view ลดการเขียนโค้ดซ้ำซ้อน

ตัวอย่างการใช้งาน

1 View::composer('profile', function($view)
2 {
3 	$view->with('count', User::count());
4 });

ตอนนี้ทุกครั้งที่ profile view ถูกสร้าง count จะถูกส่งขึ้นไปด้วย

เราสามารถส่งขึ้นไปทีละหลายๆ view ได้

1 View::composer(array('profile','dashboard'), function($view)
2 {
3     $view->with('count', User::count());
4 });

<br /><br /><br />

ถ้าเราต้องการทำให้เป็นคลาสเพื่อง่ายต่อการจัดกลุ่ม เราต้องทำแบบนี้ครับ

1 View::composer('profile', 'ProfileComposer');

สร้างคลาสขึ้นมา

1 class ProfileComposer {
2 
3 	public function compose($view)
4 	{
5 		$view->with('count', User::count());
6 	}
7 
8 }

แล้วอย่าลืมเพิ่มเข้าไปที่ไฟล์ composer.json