Hướng dẫn tạo và chạy dự án Fatfree Framework - F3 cho người mới bắt đầu

folder Kiến thức công nghệ
today 23/09/2024 21:34
Phiên bản 3 tốt hơn với việc yêu cầu ít thao tác gõ hơn để truy cập vào sức mạnh của framework đơn giản này. Trước đây, tôi đã đọc một hướng dẫn tuyệt vời về "Prototyping Ứng dụng Nhanh trong PHP Sử dụng Micro Framework", sử dụng Slim micro framework, nhưng điều làm tôi bận tâm là nó yêu cầu 5 gói trước khi có thể bắt đầu phát triển. Điều này khiến tôi nghĩ rằng nếu cần thêm 4 gói bên cạnh Slim cho một blog cơ bản, thì có lẽ nó hơi quá mỏng, và tôi đã tìm một micro framework có thể làm cùng việc này mà không cần những phụ thuộc đó.
huong-dan-tao-va-chay-du-an-fatfree-framework-f3-cho-nguoi-moi-bat-dau

Tôi đã tìm thấy Fat-Free Framework. Nó được gói gọn trong một tệp 50KB và có rất nhiều tính năng. Bạn có thể tìm hiểu về chúng trên trang web, nên tôi sẽ không lặp lại ở đây. Thay vào đó, tôi đã tái tạo hướng dẫn Slim để tạo một trang blog đơn giản, nhưng sử dụng Fat-Free Framework.

Bạn sẽ cần PHP 5.3 trên máy chủ của mình. Tôi đã sử dụng Ubuntu 12.04 cho hướng dẫn này vì phiên bản PHP đó dễ cài đặt.

Bước 1: Cài đặt Tải xuống Fat-Free Framework (F3) từ trang web. F3 hoạt động tốt cả trong thư mục gốc của trang web và từ một thư mục con. Tôi sẽ giả định rằng bạn đang sử dụng một trang web trống để thực hiện hướng dẫn này. Giải nén nội dung tải về và sao chép vào thư mục gốc của trang web.

Chuyển lên một cấp trong cấu trúc thư mục và đặt quyền:

sudo chgrp -R www-data blog
sudo chmod -R 775 blog
cd blog
sudo chmod -R 777 tmp

Nếu sử dụng Apache, mod_rewrite sẽ cần được kích hoạt.

Bước 2: Khởi động Vì mọi thứ cần thiết đã có trong F3 nên bạn không cần làm gì ở đây! Bạn có thể dọn dẹp trang web để xóa trang chính hiện tại và thêm kết nối cơ sở dữ liệu. Chỉnh sửa index.php và xóa hai hàm route – chúng chỉ được sử dụng để hiển thị trang chào mừng và tài liệu.

Để thiết lập kết nối cơ sở dữ liệu, thêm đoạn mã sau giữa các lệnh set và run:

$f3->set('DB',
  new DBSQL(
    'mysql:host=localhost;port=3306;dbname=YourDatabaseName',
    'YourUserName',
    'YourPassword'
  )
);

Tất cả các tệp Giao diện Người dùng sẽ được đặt trong thư mục ui.

Bước 3: Định tuyến Tương tự như Slim, bạn cần chỉ định phương thức yêu cầu định tuyến (GET, POST, PUT, v.v.), URI để phản hồi và cách phản hồi.

Ví dụ về định tuyến trang chính:

$f3->route('GET /',
  function ($f3) {
  // làm gì đó
  }
);

Bước 4: Mô hình Các ORM trong Fat-Free Framework thực hiện mọi công việc nặng nhọc cho bạn – không cần thư mục, tệp hay mã nào ở đây. Bạn có thấy việc này đơn giản hơn so với Slim không?

Bước 5: Giao diện Ứng dụng Giống như hướng dẫn Slim, chúng ta sẽ giữ cho việc này đơn giản. F3 có một tập hợp các ORM để dễ dàng và nhanh chóng làm việc với dữ liệu.

Bước 6: Giao diện Quản trị Ứng dụng Trang chính quản trị chỉ cần liệt kê các bài viết blog và cung cấp liên kết.

Bước 7: Sử dụng Middleware Điều này không liên quan đến việc sử dụng Fat-Free Framework. Xác thực cơ bản sử dụng cơ sở dữ liệu đã được tích hợp.

Bước 8: Tóm tắt Đây là một ví dụ khác về cách nhanh chóng có được một prototype sử dụng micro framework PHP. Liệu nó có nhanh hơn so với Slim? Tôi nghĩ là có, với ít mã hơn và ít phức tạp hơn.

Giấy phép Slim được phát hành dưới Giấy phép Công cộng MIT và bạn có thể tự do sử dụng, sửa đổi và thậm chí bán nó. F3 được phát hành theo Giấy phép Công cộng GNU (GPL v3).

Bạn có thể tải xuống các tệp được sử dụng từ đây: Fat-Free-Blog.zip.

Bước 9: Các Tệp Giao Diện

Để tạo giao diện cho quản trị viên, bạn cần các tệp HTML cho các trang khác nhau. Dưới đây là tệp admin_home.html để hiển thị danh sách bài viết:

<h1>Quản Trị Blog Của Tôi</h1>
<p><a href='admin/add'>Thêm Bài Viết</a></p>
<table>
  <thead>
    <tr>
      <th>Tiêu Đề</th>
      <th>Ngày</th>
      <th>Tác Giả</th>
      <th colspan='2'>Hành Động</th>
    </tr>
  </thead>
  <tbody>
    <repeat group="{{ @list }}" value="{{ @item }}">
      <tr>
        <td>{{ @item.title }}</td>
        <td>{{ @item.timestamp }}</td>
        <td>{{ @item.author }}</td>
        <td><a href="admin/edit/{{ @item.id }}">Chỉnh Sửa</a></td>
        <td><a href="admin/delete/{{ @item.id }}">Xóa</a></td>
      </tr>
    </repeat>
  </tbody>
</table>

Bước 10: Xử Lý Form Thêm và Chỉnh Sửa Bài Viết

Tạo tệp admin_edit.html cho việc thêm và chỉnh sửa bài viết:

<h1>Chỉnh Sửa</h1>
<form name="blog" method="post" action="{{ @BASE }}{{ @PARAMS.0 }}" >
  <label for='title'>Tiêu Đề: </label><br /><input type="text" name="title" id="title" value="{{ isset(@POST.title)?htmlspecialchars(@POST.title):'' }}" size="60"/><br />
  <label for='author'>Tác Giả: </label><br /><input type="text" name="author" id="author" value="{{ isset(@POST.author)?htmlspecialchars(@POST.author):'' }}" size="60"/><br />
  <label for='summary'>Tóm Tắt: </label><br /><textarea name="summary" id="summary" cols="60" rows="10">{{ isset(@POST.summary)?htmlspecialchars(@POST.summary):'' }}</textarea><br />
  <label for='content'>Nội Dung: </label><br /><textarea name="content" id="content" cols="60" rows="10">{{ isset(@POST.content)?htmlspecialchars(@POST.content):'' }}</textarea><br />
  <input type="submit" value="Gửi"/>
</form>

Bước 11: Xử Lý Logic Thêm và Chỉnh Sửa

Thêm các route cho việc thêm và chỉnh sửa bài viết, sử dụng cùng một tệp giao diện:

$f3->route('GET /admin/add', function($f3) {
    $f3->set('html_title', 'Tạo Bài Viết Mới');
    $f3->set('content', 'admin_edit.html');
    echo Template::instance()->render('layout.html');
});

$f3->route('GET /admin/edit/@id', function($f3) {
    $f3->set('html_title', 'Chỉnh Sửa Bài Viết');
    $id = $f3->get('PARAMS.id');
    $article = new DBSQLMapper($f3->get('DB'), 'article');
    $article->load(array('id=?', $id));
    $article->copyTo('POST');
    $f3->set('content', 'admin_edit.html');
    echo Template::instance()->render('layout.html');
});

Bước 12: Xóa Bài Viết

Thêm chức năng xóa bài viết:

$f3->route('GET /admin/delete/@id', function($f3) {
    $id = $f3->get('PARAMS.id');
    $article = new DBSQLMapper($f3->get('DB'), 'article');
    $article->load(array('id=?', $id));
    $article->erase();
    $f3->reroute('/admin');
});

Bước 13: Bảo Mật Ứng Dụng

Để bảo mật trang quản trị, bạn có thể thêm xác thực cơ bản:

$user = new DBSQLMapper($f3->get('DB'), 'user');
$auth = new Auth($user, array('id' => 'name', 'pw' => 'password'));

if ($auth->basic()) {
    $f3->set('SESSION.user', $_SERVER['PHP_AUTH_USER']);
} else {
    $f3->error(401);
}

Trong các route quản trị, bạn cần kiểm tra xác thực:

if (!$f3->get('SESSION.user')) {
    $f3->error(401);
}

Tóm tắt

Bạn đã xây dựng một ứng dụng blog đơn giản sử dụng Fat-Free Framework với đầy đủ chức năng như thêm, chỉnh sửa, xóa bài viết và quản trị người dùng. Sử dụng F3 giúp bạn giảm thiểu mã và sự phức tạp so với các framework khác.

Giấy phép

F3 được phát hành theo Giấy phép Công cộng GNU (GPL v3), bạn có thể sử dụng nó cho mục đích thương mại. Nếu bạn thấy hữu ích, hãy xem xét việc quyên góp cho dự án.

Bạn có thể tải xuống mã nguồn từ kho Bitbucket của tôi để tham khảo và phát triển thêm.

Bài viết cùng chuyên mục

hatonet

Hướng dẫn cài và sử dụng vue-object-to-formdata cho dự án nuxtjs

today 11/12/2024 22:15
vue-object-to-formdata là một thư viện JavaScript được thiết kế để chuyển đổi một đối tượng JavaScript (Object) thành đối tượng FormData. Đây là một đối tượng có thể dễ dàng sử dụng trong các yêu cầu HTTP để gửi dữ liệu, đặc biệt là khi bạn cần gửi dữ liệu như là một phần của biểu mẫu (form), ví dụ: khi upload file hoặc gửi dữ liệu dưới dạng multipart/form-data.
Xem thêm arrow_right_alt
hatonet

Hướng dẫn cài đặt và sử dụng v-tooltip trong project nuxt js

today 04/12/2024 21:34
v-tooltip là một thư viện Vue.js nhẹ, dễ sử dụng, giúp tạo ra các tooltip (hộp thông báo khi người dùng di chuột qua một phần tử) trong các ứng dụng Vue. Tooltip là một yếu tố giao diện người dùng (UI) thông báo hoặc giải thích ngắn gọn về một đối tượng khi người dùng hover (di chuột) hoặc focus vào phần tử đó.
Xem thêm arrow_right_alt
hatonet

Hướng dẫn cài đặt và sử dụng thư viện Elementjs nuxtjs

today 28/11/2024 23:14
Thư viện Element UI là một bộ thư viện giao diện người dùng mạnh mẽ, cung cấp nhiều thành phần (components) tùy chỉnh sẵn, giúp bạn xây dựng giao diện ứng dụng dễ dàng và nhanh chóng. Đối với Nuxt.js , bạn có thể tích hợp và sử dụng Element UI một cách đơn giản. Dưới đây là hướng dẫn từng bước.
Xem thêm arrow_right_alt

Việc làm tại Hatonet

Actively collaborate with team leads to develop a cohesive vision for each Agent that ensures audience resonance, and successful integration with the existing cast through personality, visual aesthetics, and gameplay Lead, manage, and mentor a high performing, healthy, and collaborative concept art team Work with production to ensure your team’s timely and successful delivery of products Maintain and contribute to artifacts that inform, align, and empower teams to successfully create character concept art in the VALORANT style

  • GWS
  • Trưởng phòng IT
Onsite
vietnam_flag