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