Bài 15: Cập nhật thông tin người dùng trong Laravel 5

học laravel 5

Trong bài viết trước mình đã hướng dẫn các bạn cách để lấy thông tin người dùng sau khi xác thực thành công. Trong bài này “Cập nhật thông tin người dùng trong laravel 5”, mình sẽ hướng dẫn các bạn cách để thay đổi thông tin người dùng.

1. Tạo UsersController và tạo đường dẫn

Các bạn vào console và trỏ vào thư mục chứa ứng dụng của mình rồi gõ lệnh php artisan make:controller UsersController để tạo Controller cho User:

1

Sau khi gõ xong và hiện lên thông báo tạo Controller thành công các bạn vào app/Http/Controllers/UsersController.php sẽ thấy có rất nhiều hàm (action) được Laravel tạo ra trước.

2

Để cập nhật thông tin người dùng thì ta sẽ sử dụng 2 hàm đó là editupdate. Cả 2 hàm này đều nhận vào input đó là id của người dùng trong đó hàm edit có nhiệm vụ trả về form thông tin người dùng để chỉnh sửa còn hàm update sẽ cập nhật thông tin đã được thay đổi vào trong cơ sở dữ liệu.

Trong hàm edit thì ta sẽ lấy thông tin của người dùng thông qua id được truyền vào và gửi qua view để hiển thị cho người dùng thay đổi:

public function edit($id)
{
   $user = User::find($id);
   return view('users.edit')->with('user',$user);
}

Việc tiếp theo cần làm đó là tạo các đường dẫn (route) để có thể truy cập vào trang cập nhật thông tin người dùng. Các bạn vào file app/Http/routes.php và thêm dòng lệnh sau:

Route::resource('users','UsersController');

2. Cài đặt Laravel HTML Package

Các bạn có thể xây dựng view bằng HTML thông thường tuy nhiên Laravel đã cung cấp một công cụ hỗ trợ là  Laravel HTML package để có thể xây dựng các view một cách dễ dàng hơn.

Để cài đặt các bạn vào console và trỏ đến thư mục ứng dụng rồi gõ lệnh composer require laravelcollective/html như sau:

10

Tiếp theo các bạn vào file config/app.php và thêm vào mảng providers dòng lệnh sau:

11

Sau đó các bạn thêm dòng lệnh sau vào trong mảng aliases cũng trong file config/app.php:

12

Gợi ý: Bạn đang quan tâm đến Bitcoin? Tìm hiểu ngay Bitcoin Toàn Tập Cho Người Mới nhé!

Một số ví dụ về cách sử dụng Laravel HTML package như sau:

<link rel="stylesheet" href="/css/app.min.css">
<script src="/javascript/jquery-1.10.1.min.js"></script>
<script src="/javascript/bootstrap.min.js"></script>

Tương đương với:

{!! HTML::style('css/app.min.css') !!}
{!! HTML::script('javascript/jquery-1.10.1.min.js') !!}
{!! HTML::script('javascript/bootstrap.min.js') !!}

Để hiểu rõ hơn về các helper của Laravel HTML package thì các bạn có thể xem tại https://github.com/LaravelCollective/html .

3. Xây dựng view edit.blade.php

Các bạn tạo view edit.blade.php và đặt nó trong thư mục resources/views/users như sau:

5

Trong view edit.blade.php thì các bạn sẽ tạo ra các trường để người dùng thay đổi thông tin và một button để submit thay đổi đó sử dụng các helper đã cài đặt trong Laravel HTML package ở trên như sau:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Cập nhật thông tin người dùng trong Laravel 5</title>
</head>
<body>
<h1>Cập nhật thông tin người dùng</h1>
 @if(Session::has('message'))
  <p>
   {{Session::get('message')}}
  </p>
 @endif
 {!! Form::model($user, array('method'=>'put','route'=>['users.update',$user->id],'class'=>'form')) !!}
 {!! Form::label('Tên')!!}
 {!! Form::text('name',null,array('required','class'=>'form-control','placeholder'=>'Tên của bạn')) !!}
 {!! Form::label('Email')!!}
 {!! Form::text('email',null,array('required','class'=>'form-control','placeholder'=>'Địa chỉ email')) !!}
 {!! Form::submit('Cập nhật thông tin!')!!}
 {!! Form::close() !!}
</body>
</html>

Sau đó các bạn vào trong đường dẫn /users/{id}/edit (trong đó {id} là id người dùng trong cơ sở dữ liệu của bạn) ví dụ như mình vào đường dẫn /users/1/edit thì sẽ hiển thị nội dung như sau:

7

Có thể bạn quan tâm: Tặng coupon 40% giá trị khóa học tạo website với Laravel 5

4. Tạo UserFormRequest để thực hiện action update

Chúng ta cần phải tạo một form request để kiểm tra thông tin dữ liệu được gửi từ form. Để tạo form request thì các bạn vào console gõ lệnh php artisan make:request UserFormRequest như sau:

8

Sau đó các bạn vào file app/Http/Request/UserFormRequest sẽ thấy có 2 hàm được xây dựng sẵn đó là hàm authorize dùng để giới hạn truy cập đối với form và hàm rules để tạo ra các qui định về dữ liệu. Trong trường hợp này ta sẽ chuyển nội dung của hàm authorize từ false thành true để ai cũng có thể sử dụng được form và tạo ra các qui tắc dữ liệu cho form cập nhật thông tin người dùng trong hàm rules như sau:

class UserFormRequest extends Request
{
    public function authorize()
    {
        return true;
    }
    public function rules()
    {
        return [
            'name' => 'required',
            'email'=> 'email|required'
        ];
    }
}

Tiếp theo ta vào trong file app/Http/Controllers/UsersController và thay đổi nội dung hàm update như sau:

 public function update(Requests\UserFormRequest $request, $id)
    {
        $user = User::find($id);
        $user->update([
            'name' => $request->get('name'),
            'email'=> $request->get('email')
        ]);

        return \Redirect::route('users.edit',array($user->id))->with('message','Thông tin người dùng đã được cập nhật!');
    }

Hàm update sẽ nhận $id người dùng vào và cập nhật thông tin người dùng từ $request được gửi từ form sau khi kiểm tra tại UserFormRequest (thông qua các rules) rồi trả về thông báo cho người dùng.

Sau đó các bạn có thể bắt đầu cập nhật thông tin người dùng tại đường dẫn /users/{id}/edit và kết quả hiện ra như sau:

16

Như vậy là mình đã hướng dẫn các bạn cập nhật thông tin người dùng trong Laravel 5. Chúc các bạn thành công và nếu có thắc mắc gì thì hãy comment phía dưới nhé ^_^

Xem thêm : Khóa học tạo website hoàn chỉnh với Laravel 5 tặng mã giảm giá 40% + Hỗ trợ việc làm sau khi học xong

Nguồn : kungfuphp.com

Chia sẻ nhanh bài viết ↓

Hieu

"Những người điên rồ tới mức nghĩ mình có thể thay đổi được thế giới chính là những người có thể làm được điều đó" _ Steve Job

Subscribe
Notify of
guest

4 Bình Luận
Newest
Oldest Most Voted
Inline Feedbacks
Xem Tất Cả Bình Luận
Trang Hong
Trang Hong
10 năm trước

sao em lam nu tren ma no k hien thi duoc edit view nhi?

nguyen thanh tai
nguyen thanh tai
Phản hồi đến  Trang Hong
10 năm trước

minh cung bi nhu ban , ban nho them dong nay vao nhe use App\User; trong UsersController.

nguyen thanh tai
nguyen thanh tai
Phản hồi đến  Trang Hong
10 năm trước

chay UsersController cua use App\User;

Nam Trần
Nam Trần
Phản hồi đến  Trang Hong
10 năm trước

Bạn vào file UsersController và thêm dòng sau vào trong đầu file:
use App\User;

4
0
Bạn có ý kiến về bài viết, hãy để lại bình luận nhé!x
()
x