Tìm kiếm bài viết

Tìm hiểu về Form/HTML trong Laravel 5

13.08.2020

0/5 (0 Reviews)

Tìm hiểu về Form/HTML trong Laravel 5. Như các bạn đã biết. Trong Laravel 4 có hỗ trợ sẵn Form/HTML.

    Hôm nay mình sẽ hướng dẫn cách bạn cách cài đặt và sử dụng Form/HTML trong Laravel 5.

    Cách cài đặt gói service HtmlServiceProvider

    Như các bạn đã biết. Trong Laravel 4 có hỗ trợ sẵn Form/HTML. Nhưng để sử dụng được ở Laravel 5 thì chúng ta cần phải cài đặt 1 package HtmlServiceProvider, vì laravel 5 ban đầu khi cài đặt chưa tích hợp ó vào. Gói HtmlServiceProvider cung cấp các phương thức đã xây dựng sẵn giúp chúng ta thao tác với form 1 cách dễ dàng hơn trong blade. Để cài đặt, cách bạn có thể thêm 1 dòng vào file composer.json </br></br>

    "require": {
            "php": ">=5.5.9",
            "laravel/framework": "5.1.*",
            "laravelcollective/html": "^5.1"
        },
    

    Sau đó các bạn vào terminal và chạy lệnh .

    composer dumpautoload
    

    Tiếp theo, bạn mở file ```config/app.php``` và tìm đến dòng chứa các provider và thêm 1 dòng vào:

      'providers' => [
        // ...
        'Collective\Html\HtmlServiceProvider',
        // ...
      ],
    

    Cuối cùng, các bạn thêm 2 aliases mới vào phần aliases như sau:

      'aliases' => [
        // ...
          'Form' => 'Collective\Html\FormFacade',
          'Html' => 'Collective\Html\HtmlFacade',
        // ...
      ],
    

    Vậy là chúng ta đã có thể sử dụng Form/HTML trong blade của Laravel 5 được rồi đấy.

    Cách sử dụng

    Để tạo 1 form, các bạn sử dụng cú pháp Form::open()Form::close() để đóng 1 form lại như sau:

    {!! Form::open(array('url' => 'foo/bar', 'method' => 'PUT')) !!}
    {!! Form::close() !!}
    

    Bạn cũng có thể mở các Form sử dụng tên route được định nghĩa trong file app/routes.php hoặc controller actions:

    {!! Form::open(['route' => 'route.name']) !!}
    {!! Form::close() !!}
    {!! Form::open(['action' => '']) !!}
    {!! Form::close() !!}
    

    Mặc định, khi khởi tạo Form sẽ có phương thức là POST, tuy nhiên các bạn cũng có thể thay đổi điều đó bằng cách truyền vào trong Form phương thức mà các bạn muốn sử dụng thông qua biến 'method'.

    Các bạn có thể tìm hiểu thêm các cú pháp khác "tại đây":. Hoặc xem list cú pháp "tại đây": . </br></br> CSRF protection

    Thêm 1 CSRF token vào 1 Form. Laravel cung cấp 1 phương thức đơn giản để bảo vệ ứng dụng web của bạn từ cross-site request forgeries (CSRF). Đầu tiên, nó đặt ngẫu nhiên 1 token vào trong session của user. Nếu bạn sử dụng Form::open với phương thức POST, PUT hoặc DELETE, CSRF token sẽ được tự động thêm vào form của bạn trong hidden field. Ngoài ra, nếu bạn muốn tạo ra HTML cho hidden CSRF field, bạn có thể sử dụng token method:

    Route::post('profile', array('before' => 'csrf', function()
    {
        //
    }));
    

    **File upload trong Laravel 5**

    Có 2 cần chú ý khi bạn muốn upload file trong Laravel.

    • Trong phương thức Form::open() cần phải set 'file' => true'. Điều này làm cho các form data sẽ được mã hóa dưới dạng 'multipart/form-data'.
    • Form::file() được sử dụng để kiểm soát các tập tin tải lên.

    Cú pháp như sau:

    {!! Form::open(array('url' => 'foo/bar', 'file' => true)) !!}
        // ...
        {!! Form::file('file', array('class' => 'name')) !!}
        // ...
    {!! Form::close() !!}
    
    Bạn hãy thử cả 2 trường hợp ko sử dụng ```'file' => true``` và có sử dụng, sau đó dump biến ```$request->file``` trong file controller. Bạn sẽ thấy sự khác biệt :D.
    

    Lấy giá trị từ Form

    Ở đây mình có một ví dụ nhỏ, các bạn mở 1 form và cho nó trỏ đến 1 action trong Controller như sau:

    {!! Form::open(['action' => '']) !!}
    {!! Form::close() !!}
    

    và function store trong Controller sẽ có dạng như sau:

    public function store(Request $request)
    {
        dump($request->all());
    }
    

    Để lấy được toàn bộ thông tin input từ form, các bạn sử dụng $request->all(). Ngoài ra, các bạn cũng có thể lấy được thông tin từng field trong form bằng cách sử dụng $request->nameField().

    Thật đơn giản phải không các bạn.  Trên đây là toàn bộ nhữn giừ mình muốn giới thiệu với các bạn về Form/HTML trong Laravel 5. Hy vọng nó sẽ giúp ích được gì đó cho các bạn.

    CÓ THỂ BẠN QUAN TÂM

    Bài Viết Cùng Chuyên Mục

    XEM THÊM
    thumbnail

    Kubernetes bài 6 - Vận hành k8s Day-Two Operations và Quản trị bằng GitOps

    22.05.2026

    Khi cụm Kubernetes của bạn đã được bảo mật cấu hình, tối ưu tài nguyên và thiết lập tự phục hồi, câu hỏi đặt ra là làm sao để duy trì sự ổn định đó trong nhiều năm tiếp theo mà không bị phụ thuộc

    thumbnail

    Kubernetes bài 5 - bảo mật Cloud Native và chuẩn DevSecOps cho K8s

    22.05.2026

    Việc siết chặt an ninh (Hardening) không phải là cấu hình một vài thông số rồi bỏ đó, mà là một tư duy phòng thủ chiều sâu.

    thumbnail

    Kubernetes bài 4 - Tối ưu Resource Auto-Healing và Scale Zero-Downtime

    22.05.2026

    Bài viết này sẽ đi sâu vào các cơ chế ở tầng Kernel giúp hệ thống tự phục hồi, chống lại các đợt tấn công cạn kiệt tài nguyên và cập nhật phiên bản mới mà người dùng không hề hay biết.

    thumbnail

    Kubernetes bài 3 - Bảo mật cấu hình k8s và config Security trên Production

    22.05.2026

    Kubernetes giải quyết bài toán này bằng hai đối tượng chuyên biệt nhưng nếu không hiểu rõ bản chất bảo mật ở tầng dưới, bạn đang tự tay dâng toàn bộ chìa khóa hệ thống cho hacker.

    thumbnail

    Kubernetes bài 2 - Mạng lưới k8s và luồng Traffic ở Packet Level

    22.05.2026

    Pod không chỉ là một container: Rất nhiều người nhầm lẫn Pod 1-1 với Container. Thực chất, Pod là đơn vị triển khai nhỏ nhất, có thể chứa một hoặc nhiều container

    Mục lục bài viết