วันพฤหัสบดีที่ 9 พฤษภาคม พ.ศ. 2556

Laravel::View Part1 The Basic


Views

               Views คือส่วนการแสดผลของเว็บไซต์ของเรานะครับ เราแยกออกมาเพื่อทำให้ง่ายต่อการจัดการได้ง่ายนะครับ ใน Laravel นี้จะมี template คือ blade engine ซึ่งจะไปพูดในบทพาร์ทหน้านะครับ ติดมาให้ด้วยเลย เรามาดูตัวอย่างกัน

สร้าง ไฟล์ index.html ขึ้นมาในโฟลเดอร์ home ที่เราสร้างขึ้นไว้ตรงที่ application/View มาสักไฟล์แล้วใส่โค้ดข้างล่างลงไปครับ

1.  <html>
2.      I'm stored in views/home/index.php!
3.  </html>

ต่อมาเราก็เข้าไปตั้งค่าใน Route นะครับ:

1.  Route::get('/', function()
2.  {
3.      return View::make('home.index');
4.  });

สร้างฟังชันขึ้นมารองรับค่าจาก view นั้น

1.  public function action_index()
2.  {
3.      return View::make('home.index');
4.  });

ใช้ฟังก์ชันข้างล่างตรวจว่ามี View อยู่ไหม

1.  $exists = View::exists('home.index');
 
 
 
 

Binding Data To Views

การส่งค่าจาก Controller หรือ Route  ขึ้นสู่ View ก็มีหลายวิธีเลยครับ
1.  Route::get('/', function()
2.  {
3.      return View::make('home')->with('name', 'James');
4.  });

ตัวแปร $name ที่มีค่าว่า jame ก็ถูกส่งมาละครับ:

1.  <html>
2.      Hello, <?php echo $name; ?>.
3.  </html>

สามารถส่งมาหลายๆตัวเลยก็ได้

1.  View::make('home')
2.      ->with('name', 'James')
3.      ->with('votes', 25);

ส่งมาเป็นอาเรย์

1.  View::make('home', array('name' => 'James'));

 

Nesting Views

ในเว็บเราจะมีส่วนหนึ่งอย่างเช่น Menu ที่เราต้องการแทรกไว้ทุกหน้า หรือว่าส่วนใดๆส่วนหนึ่งของ เว็บที่ต้องใช้ทุกหน้า เป็นส่วนที่อิสระจากหน้าหลักจะมีหรือไม่มีก็ได้ ใน Yii เรียก Partial ใน Cakephp เรียก Element ใน Laravel เรียก Nest ครับ

Binding a nested view using the "nest" method:

1.  View::make('home')->nest('footer', 'partials.footer');

Passing data to a nested view:

1.  $view = View::make('home');
2.   
3.  $view->nest('content', 'orders', array('orders' => $orders));
เราสามารถไปดึง View ของ  Controller อื่นมายัดลง View ของอีก Controller หนึ่งได้

โดยใช้ฟังก์ชัน Render

1.  <div class="content">
2.      <?php echo render('user.profile'); ?>
3.  </div>

เราสามารถใช้ partial view แสดงหลายอันได้โดยใช้ ฟัง render_each

1.  <div class="orders">
2.      <?php echo render_each('partials.order', $orders, 'order');
3.  </div>

พารามิเตอร์แรกเป็นชื่อของ partial view ตัวที่สองเป็นอาเรย์ของจ้อมูล ตัวที่สามเป็นตัวแปรที่เราจะฝากค่าจากตัวที่สองไปโชบน View

Named Views

คือการทำชื่อเล่นให้ View ครับ ข้างล่างเรา กำหนดให้ layout แทน layout.default
1.  View::name('layouts.default', 'layout');

of เป็นการเรียก ที่อยู่จริงของ layout คือ layouts.default 

1.  return View::of('layout');

สามารถแนบข้อมูลไปด้วยเลยก็ได้

1.  return View::of('layout', array('orders' => $orders));

View Composers

เมื่อเราใช้งาน composer ทุกครั้งที่มีการเรียก View มันจะถูกเรียกขึ้นมาด้วย เราสามารถใช้มันในการทำตัวแนะนำต่างๆ เช่น แนะนำเนื้อหาที่ใกล้เคียง. โดยผนวกความสามารถนี้เข้ากับ partial view เราต้องไปสร้างไว้ที่ application/routes.php.
ลองดูตัวอย่าง

ควบคุม  view ชื่อ home โดย composer

1.  View::composer('home', function($view)
2.  {
3.      $view->nest('footer', 'partials.footer');
4.  });
ถ้า home โหลดเสร็จแล้ว view ส่วน footer ก็จะตามมา

ให้ composer คุมหลายๆ view ได้นะครับ:

1.  View::composer(array('home', 'profile'), function($view)
2.  {
3.      //
4.  });

 ว่างเมื่อไหร่ผมจะมาต่อ เรื่อง blade template นะครับ

วันพุธที่ 8 พฤษภาคม พ.ศ. 2556

Laravel::Controller


     

      Controllers เป็นตัวกลางในการรับข้อมูลที่ผู้ใช้งาน ป้อนเข้ามา และคอยประสานการทำงานระหว่าง Model View Libraries ก็อาจจะเหมือนกับ  framework ตัวอื่นนะครับ แต่ใน Laravel ให้เราสามารถุเอาโค้ดที่ปกติต้องเขียนใน Controller เอาไปใช้งานใน Route ได้ อาจรายละเอียดต่อในนี้ได้เลยครับ routing document ไฟล์  Controller ถูกเก็บไว้ใน  application/controllers ซึ่งมันได้รับการสืบทดมาจาก Base_Controller class

วันอังคารที่ 7 พฤษภาคม พ.ศ. 2556

Laravel::Installation & Setup



การติดตั้ง
ซอฟต์แวร์ที่ต้องใช้
·        เอาสั้นๆผมแนะนำ easy php ครับ
·     Larvel ค้องการ php Laravel 5.3 ครับ
·     Laravel ใช้ FileInfo library ในการตรวจสอบนามสกุลของไฟล์ ซึ่งมันติดตั้งอยูแล้วกับ php        5.3  ถ้า  ต้องการข้อมูลเพิ่มก็ไปที่นี้เลยครับ  installation / configuration details on PHP.net.
·        Laravel ใช้ Mcrypt library ในฟังชัน Hash:: นะครับ

วันอาทิตย์ที่ 5 พฤษภาคม พ.ศ. 2556

Laravel::Route Part 2 ครับ


วันนี้มาต่อเรื่องที่ค้างไว้เมื่อวานนะครับ เราจะมาพูดถึงเรื่องการกรอง  URL กัน Route ของ Laravel มี  ฟังก์ชัน filter ให้ ซึ่งจะมีประโยชน์ในการตรวจสอบสิทธิ์และเพิ่มการจัดการสิทธิ์การเข้าถึง เช่น เมื่อมีการเรียกฟังก์ชัน admin_create เรามาดูตัวอย่างกัน

วันเสาร์ที่ 4 พฤษภาคม พ.ศ. 2556

Route::In Laravel Part1 ครับ


         การจัดการเส้นทางใน Laravel นั้นง่ายมากครับ แถมยังต่างจาก framework ตัวอื่นตรงที่ เราสามารถเขียนโค้ดที่ปกติ เราจะเอาไปยัดไว้ใน Controller ใส่ไว้ใน route ได้ด้วย วันนี้ผมมีตัวอย่างการจัดการเส้นทางของ Laravel มาฝากกันครับ ตัวอย่างมันก็มาจาก Document ของมันครับ และมีบางอันที่ผมไปค้นในกระทู้หลัก
1.     รูปแบบฟังชันที่ใช้รับเมื่อมีการส่งค่าแบบ get โดยไม่มี parameter เลยนะครับ ยกตัวอย่าง http://localhost/
Route::get('/', function()
{
    return "Hello World!";
});

2.     รูปแบบฟังก์ชันที่ใช้รับเมื่อมีการส่งค่าแบบ post ไปที่ controller ชื่อ user ยกตัวอย่าง http://localhost/user
 Route::post('user', function()
{
     return "Hello Taqman!";
});
3.     รูปแบบฟังชันที่ใช้รับเมื่อมีการส่งค่าทุกรูปแบบ
Route::any('/', function()
{
    return "Hello World!";
});

4.     รูปแบบฟังก์ชันที่ใช้รับเมื่อมีการรับส่งค่าแบบต่างรูปแบบ
 Route::post('user', function()
{
    //
});

Route::put('user/(:num)', function($id)
{
    //
});

Route::delete('user/(:num)', function($id)
{
    //
});
5.     รูปแบบฟังก์ชันที่ใช้รับเมื่อมีการส่งค่ามาให้ user controller เป็นแบบ get โดยส่งค่าเป็นตัวเลข ตัวอย่าง http://localhost/user/4

 Route::get('user/(:num)', function($id)
{
    //
});
6.     รูปแบบฟังก์ชันที่ใช้รับเมื่อมีการส่งค่าแบบ get ให้ post controller โดยส่งค่าเป็นตัวอักขระอะไรก็ได้
ตัวอย่าง http://localhost/post/edit-3
Route::get('post/(:any)', function($title)
{
    //
});

7.     เมื่อมีการส่งค่าชนิดใดก็ได้ให้ file controller  ตัวอย่าง http://localhost/files/edit2

 Route::get('files/(:all)', function($path)
{
    //
});
เมื่อมีการเรียก page controller โดยเรียกแบบ get แล้วส่งค่ารูปแบบใดก็ได้มาให้ ก็จะส่งไป method index ของ controller
Route::get('page/(:any?)', function($page = 'index')
{
    //
});

ชักจะยาวไปละครับ พรุ่งนี้มาต่อ part2 เรื่องการสร้าง filter,pattern filter,Global filter,Route Group,
Name Route,Bundle Route,Controller Routing,Cli Route นะครับ หรืจะไปอ่านเองที่ เว็บหลักเลยก็ได้นะครับ

วันพฤหัสบดีที่ 2 พฤษภาคม พ.ศ. 2556

รู้จักกับ Laravel PHP Framework น้องใหม่ครับ


  


  Laravel อ่านว่า ลาราเวล เป็น php framework น้องใหม่ที่กำลังจะมีอายุครบ 3 ขวบในปีนี้ laravel  เขียนขึ้นโดยคุณ Taylor Otwell เป็น software engineer ของ Userscape และเป็นหนึ่งในทีมพัฒนา Codeigniter ด้วย เขาบอกว่าใช้เวลาว่างในการทำ framework ตัวนี้ จุดเด่นหลักๆจากที่ผมลองเล่นมาคือ
1.การเรียกใช้งานคลาสต่างๆ ง่ายมาก เพราะ larval ใช้ name space ในการเรียกใช้งานคลาส ทำให้โค้ดสั้นและเข้าใจง่ายได้อีก
2.การจัดการเส้นทาง ซึ่งยืดหยุ่นมากมีวิธีและมีวิธีการเขียน แบบเดียวกับ javascript ใครที่เคยเขียน js  มาก่อนจะเข้าง่ายมาเลยครับ
3.ส่วนขยายของ laravel ชื่อว่า bundle ซึ่งมีจุดเด่นคือติดตั้งง่ายๆผ่าน command line โดยคำสั่ง php artisan ได้เลย

4. eloquent orm เป็นการสร้างคลาสขึ้นมาจัดการฐานข้อมูลหนะครับ เหมือนกับ orm ในหลาย framework แต่ใน laravel เรียกว่า eloquent เพราะ มีฟังชันมากกว่าๆ และเข้าใจได้ง่ายกว่าตัวอื่นหนะครับ ยกตัวอย่าง where_in, where_not_in, or_where_in, and or_where_not_in

5. Routing เขียนแบบ javascript function ผมรู้สึกว่ามันเข้าใจง่ายมาก และในตัวอย่างเขามีการประยุกต์ทำไว้เยอะแยะเลยครับ

6. restful Controller เราสามารถกำหนดให้ฟังชันใน controller รับค่าเฉพาะที่มาจาก method ที่เราต้องการได้เพียงแค่ใส่ prefix เช่น get_  , post_ ไว้ข้างหน้าฟังชันของเรา

7.view composer มีการแนบเทมเพลทมาให้ในตัวเลยไม่ต้องเสียเวลาไปลง smarty หรือ twig อีกแล้วครับ

8.IOC container เป็นอีกฟังชันเด่นเลย ที่ผมเห็นมา คือมันอนุญาตให้เราแทรก libraries อะไรก็ได้เข้าไป เรียกใช้งานได้ทันทีพอเลิกใช้ก็ลบออกได้ง่ายๆ เลยไม่ต้องปรับแต่งเยอะเลยครับ

ผมกะจะเขียนเป็นซีรี่เลย ท่านใดสนใจก็ติดตามอ่านได้นะครับ ^__^