Laravel : File Structure

ครั้งแรกกับเรื่อง Folder Structure ว่าเราจะจัดการเรื่อง File หรือ Folder ยังไง ก็มี Guideline มาให้ จริงๆอ่านจากเว็บ Tutorial นี้ก็เข้าใจง่ายดี

Routing

Route::get('/', function()
{
    return View::make('pages.home');
});
Route::get('about', function()
{
    return View::make('pages.about');
});
Route::get('projects', function()
{
    return View::make('pages.projects');
});
Route::get('contact', function()
{
    return View::make('pages.contact');
});

File Structure

โครงสร้างของ File และ Folder 

- app
-- views
--- layouts
------- default.blade.php
------- sidebar.blade.php
--- pages
------- home.blade.php
------- about.blade.php
------- projects.blade.php
------- contact.blade.php
--- includes
------- head.blade.php
------- header.blade.php
------- footer.blade.php
------- sidebar.blade.php

Include

head.blade.php

<meta charset="utf-8">
<meta name="description" content="">

<title>Super Cool Layouts</title>

<!-- load bootstrap from a cdn -->
<link rel="stylesheet" href="//netdna.bootstrapcdn.com/twitter-bootstrap/3.0.3/css/bootstrap-combined.min.css">

header.blade.php

<div class="navbar">
    <div class="navbar-inner">
        <a id="logo" href="/">Single Malt</a>
        <ul class="nav">
            <li><a href="/">Home</a></li>
            <li><a href="/about">About</a></li>
            <li><a href="/projects">Projects</a></li>
            <li><a href="/contact">Contact</a></li>
        </ul>
    </div>
</div>

footer.blade.php

<div id="copyright text-right">© Copyright 2013</div>

Default Layouts 

ใช้แต่ @include @yield เชื่อมกับโครงสร้าง File อื่นๆ ถือว่าง่ายดี 

<!doctype html>
<html>
<head>
    @include('includes.head')
</head>
<body>
<div class="container">

    <header class="row">
        @include('includes.header')
    </header>

    <div id="main" class="row">

            @yield('content')

    </div>

    <footer class="row">
        @include('includes.footer')
    </footer>

</div>
</body>
</html>

ถ้ามี Page contact ที่ใช้ Layout เดียวกัน ก็ให้เพิ่ม @yield('contact') ไปก็ได้

     <div id="main" class="row">
            @yield('content')
            @yield('contact')
    </div>

Pages

ที่เหลือก็แค่แทรก File เป็น Page เข้าไป

pages/about.blade.php

@extends('layouts.sidebar')
@section('content')
    i am the about page
@stop

pages/projects.blade.php

@extends('layouts.sidebar')
@section('content')
    i am the projects page
@stop

คร่าวๆถือว่าได้ Concept เรื่อง Layout ของ Laravel ที่เหลือให้ลองศึกษาจากเว็บของ Laravel  

Add new comment

Plain text

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.