0

#3 Laravel 5: Sử dụng View

Với những ai đã từng làm việc với các MVC framework thì sẽ không lạ lẫm gì với view, các bạn có thể bỏ qua phần giới thiệu thô sơ này nhé. View là một tầng logic trong mô hình MVC, mục đích của sử dụng view là tách phần hiển thị nội dung ra khỏi phần xử lý dữ liệu của PHP. Do đó, đúng với tiêu chuẩn thì View chỉ chịu trách nhiệm nhận dữ liệu đầu cuối và hiển thị ra giao diện mà hầu như rất ít dùng PHP. Nếu View của bạn đang có quá nhiều code PHP thì nên xem lại nhé!

Cơ bản về view

View trong Laravel 5 là gì?

View trong Laravel có cùng ý nghĩa như trên. Nó là đầu cuối hiển thị dữ liệu. Tất cả view của Laravel sẽ mặc định lưu trong resources/views . Ví dụ đơn giản về một file view như sau:

Khi file đã được lưu tại resources/views/greetings.php , bạn có thể sử dụng bằng cách gọi hàm view() để hiển thị:

Như bạn thấy, hàm view()  nhận vào hai tham số. Tham số thứ nhất chính là tên của view, bạn chỉ cần gọi tên, không cần thêm vào đuôi “.php”. Tham số thứ hai là một mảng để truyền dữ liệu đã “xử lý” vào view; nó là một mảng, với key là tên của biến sẽ sử dụng ở view và value là giá trị của biến đó. Như ví dụ trên, biến   $name  ở view được gán giá trị “James” ở route.

Dĩ nhiên bạn cũng có thể lưu file view và các thư mục con bên trong resources/views  resources/views , ví dụ, nếu bạn lưu view tại  resources/views/admin/profile.php , bạn có thể sử dụng view bằng cách:

Kiểm tra view có tồn tại hay không

Bạn có thể kiểm tra xem view có tồn tại hay không bằng cách dùng hàm exist()  sau khi gọi hàm view() mà không có tham số, exist()  sẽ trả về giá trị true nếu file view có trên đĩa, và ngược lại:

Render view từ routes

Gọi hàm view() trực tiếp từ route để render view mong muốn.

Render view từ Controller

View cũng có thể render từ controller tương tự như cách render từ route, đó là return hàm view():

Dữ liệu của view

Truyền dữ liệu vào view

Như đã nói ở trên, tham số thứ hai của hàm view() nhận vào một mảng với key và value, bạn có thể thêm vào mảng bao nhiêu cặp key=>value tùy ý để truyền dữ liệu từ route/controller sang view:

Như bạn thấy, tất cả xử lý sẽ tách khỏi view, bạn làm gì đó với dữ liệu và có nó ở biến $data, bạn truyền vào view thông qua biến ‘more_data’ và view sẽ sử dụng biến này mà không xử lý gì thêm.

Chú ý: giá trị truyền vào view có thể có bất cứ kiểu dư liệu nào: Int, String, Array, Object,…

Chia sẻ dữ liệu với tất cả các view

Đôi khi, bạn cần chia sẻ một thông tin cho tất cả các view sẽ hiển thị trên ứng dụng, ví dụ: hiển thị thông tin user đã đăng nhập lên thanh trạng thái của các trang backend chẳng hạn. Bạn sẽ không muốn việc lặp đi lặp lại việc insert data trong hàm view()  đâu. Thay vào đó, bạn có thể dùng hàm share() , gọi nó trong hàm boot()  của một Laravel service provider bất kỳ. Với kiến thức hiện tại, có thể bạn chưa hiểu “service provider” là gì? Hãy tạm chấp nhận và gọi hàm share()  trong file app/Providers/AppServiceProvider.php :

Bài kế tiếp trong series Lập Trình Web Với Laravel – Cơ Bản:

#4 Laravel 5: View & Cách sử dụng Blade Template

Bình luận với Facebook

Hoàng Tựa

Yêu thích lập trình web và tạo ra những thứ đẹp đẽ.

Leave a Reply

Your email address will not be published. Required fields are marked *