Tạo action view trong ArticlesController

Lượt xem: 2804

Tạo action view trong ArticlesController

Nếu bạn đã nhất vào một liên kết "view" trong trang danh sách bài viết. Bạn sẽ thấy một trang lỗi nói rằng hành động đó đã được thực hiện. Bây giờ hãy sửa nó lại như sau:


 // Add to existing src/Controller/ArticlesController.php file

public function view($slug = null)
{
    $article = $this->Articles->findBySlug($slug)->firstOrFail();
    $this->set(compact('article'));
}

 

Mặc dù đây là một hành động đơn giản, nhưng chúng ta đã sử dụng một số tính năng mạnh mẽ của CakePHP. Chúng ta bắt đầu hành động bằng cách sử dụng finBySlug() là một trình tìm kiếm động. Phương thức này cho phép chúng ta tìm kiếm tất cả các bài viết bằng một slug nhất định. Sau đó, chúng ta sử dụng firstOrFail() để tìm nạp bản ghi đầu tiên hoặc ném NotFoundException.

Hành động của chúng ta có một tham số $slug nhưng tham số đó đến từ đâu? Nếu người dùng yêu cầu /articles/view/first-post thì giá trị 'first-post' được truyền dưới dạng $slug bởi các lớp định tuyến và gửi đi của CakePHP.  Nếu chúng ta tải lại trình duyệt (browser)  với hành động mới đã được lưu, chúng ta sẽ thấy một trang lỗi khác, CakePHP cho chúng ta thấy rằng chúng ta đang thiếu một view template. Hãy khắc phụ điều đó bằng cách tạo view template.

Video

 

Nguồn https://book.cakephp.org/3.0/en/quickstart.html