keyboard_tabSkip to content
listVue Firebase Masterclass

ทำส่วน Layout และ Login

สารบัญ

ทำ LoginView

สิ่งที่จะทำ

  • เพิ่ม form สำหรับกรอก email, password มา
  • ตอนกด Login ให้เข้าไปหน้าด้านในได้
  • (optional) เพิ่ม validate email เข้ามาว่ากรอก email ต้องถูกต้อง
html
<script setup>
import { RouterLink } from 'vue-router';
</script>

<template>
  <div class="min-h-screen bg-base-200 flex items-center">
    <div class="card mx-auto w-full max-w-2xl shadow-xl">
      <div class="py-24 px-10">
        <h2 class="text-2xl font-semibold mb-2 text-center">Login</h2>
        <div class="mb-4">
          <div class="form-control w-full mt-4">
            <label class="label"
              ><span class="label-text text-base-content undefined"
                >Email Id</span
              ></label
            ><input
              type="emailId"
              placeholder=""
              class="input input-bordered w-full"
              value=""
            />
          </div>
          <div class="form-control w-full mt-4">
            <label class="label"
              ><span class="label-text text-base-content undefined"
                >Password</span
              ></label
            ><input
              type="password"
              placeholder=""
              class="input input-bordered w-full"
              value=""
            />
          </div>
        </div>
        <p class="text-center text-error mt-8"></p>
        <RouterLink to="/admin/dashboard" class="btn mt-2 w-full btn-primary"
          >Login</RouterLink
        >
      </div>
    </div>
  </div>
</template>

ผลลัพธ์ของหน้า Login

login

ทำ AdminLayout

เราจะสร้าง Layout ใหญ่สำหรับคุม style และ sidebar ของทุกหน้า admin โดย สิ่งที่เราจะทำกัน

  • เริ่มทำ sidebar สำหรับเลือก Menu ของ Admin โดยเมนูจะประกอบด้วย
    • /admin/dashboard = หน้า Dashboard สำหรับสรุปสถิติรวม
    • /admin/products = หน้า Product Management สำหรับจัดการ product
    • /admin/orders = หน้า Order Management สำหรับจัดการ order และตรวจสอบ order
    • /admin/users = หน้า User Management สำหรับจัดการ user
    • /admin/login = เมนู Logout (ปุ่มสำหรับกลับไปหน้า Login)
  • เพิ่ม <slot></slot> ตรงกลางสำหรับให้ใส่ component ในแต่ละหน้า
  • ทำ style ของ sidebar (ใช้ menu ของ daisyUI)
html
<script setup>
import { RouterLink } from 'vue-router'
import { ref } from 'vue'
import { useRoute } from 'vue-router'

const route = useRoute()

const pageData = [
  {
    name: 'Dashboard',
    route: '/admin/dashboard',
  },
  {
    name: 'Product',
    route: '/admin/products',
  },
  {
    name: 'Order',
    route: '/admin/orders',
  },
  {
    name: 'User',
    route: '/admin/users',
  },
  {
    name: 'Logout',
    route: '/admin/login',
  },
]

const currentPath = ref('')
currentPath.value = route.path
</script>

<template>
  <div class="drawer drawer-open">
    <input id="my-drawer-2" type="checkbox" class="drawer-toggle" />
    <div class="drawer-content p-4">
      <slot></slot>
    </div>
    <div class="drawer-side">
      <label for="my-drawer-2" class="drawer-overlay"></label>
      <ul class="menu p-4 w-60 h-full bg-base-200 text-base-content">
        <!-- Sidebar content here -->
        <li class="mb-2 font-semibold text-2xl">
          <div>Admin {{ pageName }}</div>
        </li>
        <li v-for="page in pageData">
          <RouterLink :to="page.route" :class="currentPath === page.route ? 'active' : ''">
            {{ page.name }}
          </RouterLink>
        </li>
      </ul>
    </div>
  </div>
</template>

ผลลัพธ์ sidebar