[Bài 3] Thêm dữ liệu vào Database bằng CakePHP

Bài viết trước mình đã hướng dẫn bạn cách hiển thị dữ liệu từ Database với CakePHP. Tiếp tục chuỗi series học CakePHP hôm nay mình viết bài Thêm dữ liệu vào Database bằng CakePHP dễ dàng.

Khi tạo các tập tin thông thường chúng ta sẽ bắt đầu tạo file trong Controller.

Bước 1: Tạo file PostsController.php (C:\xampp\htdocs\cakephp\src\Controller)

<?php
namespace App\Controller;

class PostsController extends AppController
{
public function initialize()
{
parent::initialize();

$this->loadComponent('Flash');
}

public function index()
{
$posts = $this->Posts->find('all');
$this->set(compact('posts'));
}

public function add()
{
$post = $this->Posts->newEntity();
if ($this->request->is('post')) {
$post = $this->Posts->patchEntity($post, $this->request->data);
$post->created = date("Y-m-d H:i:s");
$post->modified = date("Y-m-d H:i:s");
if ($this->Posts->save($post)) {
$this->Flash->success(__('Your post has been saved.'));
return $this->redirect(['action' => 'index']);
}
$this->Flash->error(__('Unable to add your post.'));
}
$this->set('post', $post);
}
}

Bước 2: Thêm file add.ctp (C:\xampp\htdocs\cakephp\src\Template\Posts)

<h2>Add Blog Post</h2>
<?php
echo $this->Form->create($post);
echo $this->Form->input('title');
echo $this->Form->input('description', ['rows' => '3']);
echo $this->Form->button(__('Save Post'));
echo $this->Form->end();
?>

Bước 3: Tạo file PostsTable.php (src/Model/Table/PostsTable.php)

<?php

namespace App\Model\Table;

use Cake\ORM\Table;
use Cake\Validation\Validator;

class PostsTable extends Table
{
public function initialize(array $config)
{
$this->addBehavior('Timestamp');
}

public function validationDefault(Validator $validator)
{
$validator
->notEmpty('title')
->notEmpty('description');

return $validator;
}
}

Bước 4: Cấu hình lại routes.php tại C:\xampp\htdocs\cakephp\config

$routes->connect('/', ['controller' => 'Posts', 'action' => 'index']);

Cuối cùng truy cập vào http://localhost/cakephp/posts/add để thêm dữ liệu bài viết.

0 0 vote
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments