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. });
ไม่มีความคิดเห็น:
แสดงความคิดเห็น