Khoa luan tot nghiep laravel

262 395 0
Khoa luan tot nghiep  laravel

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Vậy Mô hình MVC là gì? M là Model: cấu trúc dữ liệu theo cách tin cậy và chuẩn bị dữ liệu theo lệnh của controller V là View: Hiển thị dữ liệu cho người dùng theo cách dễ hiểu dựa trên hành động của người dùng. C là Controller: Nhận lệnh từ người dùng, gửi lệnh đến cho Model để cập nhập dữ liệu, truyền lệnh đến View để cập nhập giao diện hiển thị. Chàng lập trình viên đi giao lưu với bạn bè vào tối thứ sáu, ra góc trà đá vỉa hè gọi đồ. Trà đá tối mùa hè nóng nực đông hơn bình thường, chàng len lỏi luồn qua đám đông cho đến khi thấy chị chủ, rồi hét to: “Một nước mía em ơi”. Chàng là “người dùng”, và đồ uống chàng gọi là “yêu cầu người dùng”. Với chàng, nước mía là đồ uống ưa thích, mát lạnh và ngọt ngào cho buổi tối nóng nực. Chị chủ gật đầu cười trìu mến.Não của chị chủ đóng vai trò “Controller”. Ngay khi từ “nước mía” ập đến bằng tiếng Việt, chị hiểu và bắt đầu công việc. Pha nước mía bản chất cũng giống pha nước chanh, nước sấu nhưng nguyên liệu thì hoàn toàn khác biệt nhau. Chị chủ quán chỉ có thể sử dụng công cụ và nguyên liệu của quán chị. Những công cụ của chị chủ trà đá đóng vai trò “Model”.

LỜI NĨI ĐẦU Trong năm gần đây, cơng nghệ thơng tin dần khẳng định vai trò quan trọng phần tất yếu nghiệp phát triển kinh tế - xã hội đất nước Đối với doanh nghiệp, công nghệ thông tin yếu tố góp phần quan trọng việc đổi phương thức quản lý, sản xuất kinh doanh Với ngành cơng nghệ thơng tin phát triển theo đó, có nhiều ngơn ngữ lập trình ngơn ngữ lập trình hỗ trợ việc xây dựng ứng dựng web điển hình Laravel Laravel framework PHP phát triển Taylor Otwell vào năm 2011 Là mã nguồn mở hoàn toàn miễn phí, laravel sinh nhằm mục đích hỗ trợ ứng dụng web sử dụng mơ hình MVC (Model, Controller, View) Laravel giải pháp thay cho CodeIgniter, cung cấp nhiều tính vượt trội composer, xác thực, phân quyền Vì framework nên Laravel thừa hưởng ưu điểm mạnh từ framework trước CodeIgniter, Yii, .và dần trở thành thay cho framework cũ kỹ Cake hay Yii, ASP.NET MVC, Ruby on Rails… Trong Laravel tích hợp composer làm cơng cụ quản lý, sử dụng blade template giúp việc quản lý template thật đơn giản, việc thao tác với Cơ Sở Dữ Liệu thật dễ dàng với Query Buider ORM Website đa ngơn ngữ ln điều lập trình viên quan tâm sử dụng framework, Laravel chuyện trở nên dễ dàng Laravel cung cấp cho người dùng cách thức đơn giản để ứng dụng đa ngôn ngữ Hà Nội, ngày 21 tháng năm 2018 Tác giả MUC LUC CHƯƠNG 1.1 ROUTING Cơ Routing 1.1.1 File ruote mặc định 1.1.2 Các phương thức route sẵn có 1.2 Tham số Route 1.2.1 Tham số bắt buộc 1.2.2 Tham số tùy chọn 1.2.3 Các ràng buộc biểu thức quy 1.2.3.1 Ràng buộc tồn cục (global constraints) 1.2.4 Named Route 1.2.4.1 Nhóm route route đặt tên 1.2.4.2 Sinh URI cho route đặt tên 1.3 Nhóm route 1.3.1 Middleware 1.3.2 Namespaces 1.3.3 Sub-Domain Routing 1.3.4 Tiền tố route (route prefix) 1.4 Ngăn chặn CSRF 1.4.1 Giới thiệu 1.4.2 Loại bỏ URI từ CSRF protection 1.4.3 X-CSRF-TOKEN 1.5 X-XSRF-TOKEN 1.6 Route Model Binding 1.6.1 Ràng buộc ngầm định (Implicit Binding) 1.6.1.1 Tùy biến tên khóa .8 1.6.2 Ràng buộc tường minh (Explicit Binding) 1.6.2.1 Ràng buộc tham số vào model 1.6.2.2 Tùy biến Resolution Logic 1.6.2.3 Tùy biến hành động “Not Found” 10 1.7 Form Method Spoofing 10 1.8 Truy cập vào route CHƯƠNG MIDDLEWARE 11 2.1 Giới thiệu 2.2 Định nghĩa Middleware 11 2.2.1 2.3 11 Before/After Middleware 12 Đăng ký Middleware 13 2.3.1 Global Middleware 13 2.3.2 Gán Middleware cho routes 2.3.3 Nhóm Middleware 14 13 2.4 Tham số Middleware 2.5 Terminable Middleware 16 CHƯƠNG 10 15 ROUTING CONTROLLERS 3.1 Giới thiệu 3.2 Controllers 17 17 17 3.2.1.1 Controllers & Namespaces .17 3.2.1.2 Đặt tên cho controller routes 18 3.3 Controller Middleware 18 3.4 RESTful Resource Controllers 19 3.4.1.1 Các hành động xử lý resource controller 19 3.4.1.2 Partial Resource Routes 20 3.4.1.3 Đặt tên Resource Routes 20 3.4.1.4 Đặt tên Resource Route Parameters 20 3.4.1.5 Bổ sung Resource Controllers 21 3.5 Dependency Injection & Controllers 21 3.5.1.1 Constructor Injection 21 3.5.1.2 Method Injection .22 3.6 Route Caching CHƯƠNG 4.1 23 REQUESTS 25 Truy cập vào requests 4.1.1 25 Thông tin request 26 4.1.1.1 Lấy request URI 26 4.1.1.2 Lấy phương thức request 27 4.1.2 4.2 PSR-7 Request 27 Lấy thông tin Input 27 4.2.1 Lấy giá trị input 27 4.2.2 Lấy giá trị JSON input 4.2.3 Xác định hữu giá trị 4.2.4 Lấy toàn liệu input 4.2.5 Lấy phần liệu input 28 4.2.6 Thuộc tính động 4.2.7 Input cũ 28 28 28 28 28 4.2.7.1 Flash input vào session 29 4.2.7.2 Flash input vào session điều hướng 29 4.2.7.3 Lấy liệu cũ 29 4.2.8 Cookies 29 4.2.8.1 Lấy cookies từ request 29 4.2.8.2 Đính kèm cookie vào response 30 4.2.9 Files 30 4.2.9.1 Lấy file upload .30 4.2.9.2 Kiểm tra upload thành công 30 4.2.9.3 Di chuyển file upload 30 4.2.9.4 Các phương thức khác với file 31 CHƯƠNG 5.1 RESPONSES Response 32 32 5.1.1 Các đối tượng response 32 5.1.2 Đính kèm headers vào response 32 5.1.3 Đính kèm cookies vào response 33 5.1.4 Cookies mã hóa 34 5.2 Các kiểu response khác 5.2.1 Xem response34 5.2.2 JSON response 5.2.3 Tải file 35 34 34 5.2.4 5.3 File response 35 Điều hướng 35 5.3.1 Điều hướng tới named route 5.3.2 Điều hướng tới controller actions 36 5.3.3 Điều hướng với flashed session data 5.4 36 36 Response macros 37 CHƯƠNG 6.1 VIEW VÀ BLADE TEMPLATES Cơ view 38 38 6.1.1 Xác định tồn view 6.1.2 Dữ liệu view 39 38 6.1.2.1 Truyền liệu vào view 39 6.1.2.2 Chia liệu với toàn view .39 6.1.3 View composers 40 6.1.3.1 Đính kèm composer vào nhiều view 42 6.1.3.2 View creators 42 6.2 Blade Templates 6.2.1 Giới thiệu 6.2.2 Kế thừa template 43 43 43 6.2.2.1 Định nghĩa layout 43 6.2.2.2 Mở rộng layout 43 6.2.3 Hiển thị liệu 44 6.2.3.1 Blade JavaScript Framework .45 6.2.3.2 Echo liệu tồn 45 6.2.3.3 Hiển thị liệu unescaped 45 6.2.4 Cấu trúc điều khiển 45 6.2.4.1 Câu lệnh If 46 6.2.4.2 Vòng lặp 46 6.2.4.3 Chèn sub-views .47 6.2.4.4 Render view cho collections 48 6.2.4.5 Comments .48 6.2.5 Ngăn xếp 48 6.2.6 Service Injection 49 6.2.7 Mở rộng Blade 49 CHƯƠNG 7.1 CƠ SỞ DỮ LIỆU AND ELOQUENT ORM 51 Cơ sở liệu 7.1.1 Mở đầu 51 51 7.1.1.1 Giới thiệu 51 7.1.1.2 Chạy Raw SQL query .53 7.1.1.3 Giao tác sở liệu 55 7.1.1.4 Sử dụng nhiều kết nối .56 7.1.2 Query Builder 56 7.1.2.1 Giới thiệu 56 7.1.2.2 Truy xuất kết 56 7.1.2.3 Selects .59 7.1.2.4 Joins 59 7.1.2.5 Unions .61 7.1.2.6 Mệnh đề Where .61 7.1.2.7 Mệnh đề Where nâng cao .63 7.1.2.8 Mệnh đề JSON Where 64 7.1.2.9 Sắp xếp, nhóm, giới hạn offset 65 7.1.2.10 Câu điều kiện 66 7.1.2.11 Inserts 66 7.1.2.12 Updates 67 7.1.2.13 Deletes 67 7.1.2.14 Pessimistics locking 68 7.1.3 Migrations 68 7.1.3.1 Giới thiệu 68 7.1.3.2 Tạo Migration 68 7.1.3.3 Cấu trúc Migration 69 7.1.3.4 Chạy Migration 70 7.1.3.5 Viết Migration 70 7.1.4 Seeding 78 7.1.4.1 Giới thiệu 78 7.1.4.2 Tạo Seeder 78 7.1.4.3 Chạy Seeder 80 7.2 Eloquent ORM 7.2.1 Mở đầu 80 80 7.2.1.1 Giới thiệu 80 7.2.1.2 Định nghĩa mơ hình 80 7.2.1.3 Truy xuất nhiều mơ hình 83 7.2.1.4 Truy xuất mơ hình đơn/ gộp nhóm 85 7.2.1.5 Thêm cập nhật mơ hình 86 7.2.1.6 Xóa mơ hình 89 7.2.1.7 Phạm vi truy vấn .92 7.2.1.8 Các kiện .96 7.2.2 Các quan hệ 97 7.2.2.1 Giới thiệu 97 7.2.2.2 Định nghĩa quan hệ 97 7.2.2.3 Truy vấn quan hệ 111 7.2.2.4 Thêm mơ hình liên quan 115 7.2.2.5 Quan hệ nhiều – nhiều 117 7.2.3 Collections 119 7.2.3.1 Giới thiệu 119 7.2.3.2 Các phương thức sẵn có 120 7.2.3.3 Custom Collections .120 7.2.4 Mutators 121 7.2.4.1 Giới thiệu 121 7.2.4.2 Accessors & Mutators 121 7.2.4.3 Date Mutators .123 7.2.4.4 Attribute Casting 124 7.2.5 Serialization 125 7.2.5.1 Giới thiệu 125 7.2.5.2 Sử dụng .126 7.2.5.3 Ẩn thuộc tính khỏi JSON 126 7.2.5.4 Thêm giá trị vào JSON 127 CHƯƠNG 8.1 SERVICES 129 Xác Thực (Authentication) 129 8.1.1 Giới thiệu 8.1.2 Bắt đầu nhanh với xác thực 129 8.1.3 Xác thực người dùng thủ công 133 8.1.4 Xác thực HTTP 136 8.1.5 Đặt lại mật 8.1.6 Thêm Custom User Providers 8.1.7 Events 143 8.2 129 Authorization 137 144 8.2.1 Giới thiệu 8.2.2 Định nghĩa Abilities 144 8.2.3 Kiểm tra Abilities 8.2.4 Bên Blade Templates 148 8.2.5 Policies 8.2.6 Controller Authorization 8.3 144 146 149 153 Cache 154 8.3.1 Cấu hình 8.3.2 Sử dụng Cache 8.3.3 Cache Tags 159 8.3.4 Thêm cache driver tùy chọn 8.3.5 Events 161 8.4 140 154 156 Errors & Logging 162 8.4.1 Giới thiệu 162 8.4.2 Cấu hình 162 8.4.3 The Exception Handler 8.4.4 HTTP Exceptions 8.4.5 Logging 165 165 163 159 8.5 Events 166 8.5.1 Giới thiệu 166 8.5.2 Registering Events / Listeners 8.5.3 Định nghĩa event 8.5.4 Định nghĩa listener 168 8.5.5 Tạo Events 8.5.6 Broadcasting Events 171 8.5.7 Event Subscriber 8.6 168 171 176 Filesystem / Cloud Storage 8.6.1 Giới thiệu 177 8.6.2 Cấu hình 178 8.6.3 Sử dụng 8.6.4 Custom Filesystems 182 8.7 166 177 179 Localization 184 8.7.1 Giới thiệu 8.7.2 Sử dụng 8.7.3 Ghi đè file ngôn ngữ nhà cung cấp 8.8 184 185 Mail 186 8.8.1 Giới thiệu 186 8.8.2 Gửi Mail 188 8.8.3 Mail & Local Development 192 8.8.4 Events 192 8.9 186 Hàng đợi (queue) 193 8.9.1 Giới thiệu 8.9.2 Viết lớp công việc 8.9.3 Đưa công việc vào hàng đợi 8.9.4 Thực thi lắng nghe hàng đợi (queue listener) 201 8.10 193 Phiên (session) 8.10.1 Giới thiệu 196 206 206 8.10.2 Sử dụng 208 8.10.3 Thêm driver phiên 210 8.11 193 Task Scheduling (Lap lich cho tác vụ) 212 8.11.1 Giới thiệu 212 8.11.2 Định nghĩa lịch 212 8.11.3 Đầu tác vụ 216 8.11.4 Task Hooks 8.12 216 Kiểm tra (Testing) 217 8.12.1 Giới thiệu 217 8.12.2 Kiểm thử ứng dụng 218 8.12.3 Làm việc với sở liệu 222 8.12.4 Mocking 8.13 227 Xác nhận(Validation) 8.13.1 Giới thiệu 230 230 8.13.2 Xác nhận Quickstart 230 8.13.3 Các phương pháp xác nhận khác 235 8.13.4 Làm việc với thông báo lỗi 8.13.5 Quy tắc Xác thực Có sẵn 241 8.13.6 Điều kiện Thêm Quy tắc 248 8.13.7 Quy tắc xác thực tùy chỉnh 249 239 * @param StoreBlogPostRequest $request * @return Response */ public function store(StoreBlogPostRequest $request) { // The incoming request is valid } Nếu xác nhận không thành công, phản hồi chuyển hướng tạo để gửi người dùng vị trí trước Các lỗi flashed đến phiên để chúng có sẵn để hiển thị Nếu yêu cầu yêu cầu AJAX, phản hồi HTTP với mã trạng thái 422 trả lại cho người dùng bao gồm biểu diễn lỗi xác nhận JSON  Yêu cầu Mẫu Yêu cầu Lớp yêu cầu mẫu chứa phương thức ủy quyền Trong phương pháp này, bạn kiểm tra xem người dùng chứng thực có quyền cập nhật tài nguyên định hay khơng Ví dụ: người dùng cố gắng cập nhật nhận xét đăng blog, liệu họ có sở hữu bình luận khơng? Ví dụ: /**Determine if the user is authorized to make this request * @return bool */ public function authorize() { $commentId = $this->route('comment'); return Comment::where('id', $commentId) ->where('user_id', Auth::id())->exists(); } Ghi gọi đến phương pháp tuyến đường ví dụ Phương pháp cho phép bạn truy cập vào tham số URI xác định tuyến đường gọi, chẳng hạn tham số {comment} ví dụ đây: Route::post('comment/{comment}'); Nếu phương pháp ủy quyền trả false, phản hồi HTTP với mã trạng thái 403 tự động trả lại phương thức điều khiển bạn không thực Nếu bạn dự định có logic ủy quyền phần khác ứng dụng bạn, cần trả lại từ phương pháp ủy quyền: 238 /** Determine if the user is authorized to make this request @return bool */ public function authorize() { return true; }  Tùy chỉnh định dạng Flashed Error Nếu bạn muốn tùy chỉnh định dạng lỗi xác nhận chiếu đến phiên xác nhận không thành công, ghi đè định dạng lỗi yêu cầu sở bạn (App \ Http \ Requests \ Request) Đừng quên nhập lớp Illuminate \ Contracts \ Validation \ Validator đầu tệp: /** {@inheritdoc} */ protected function formatErrors(Validator $validator) { return $validator->errors()->all(); }  Tùy chỉnh thơng báo lỗi Bạn tùy chỉnh thông báo lỗi sử dụng yêu cầu mẫu cách ghi đè phương pháp điều trị thư Phương pháp nên trả mảng cặp thuộc tính / quy tắc thông báo lỗi tương ứng chúng: /**Get the error messages for the defined validation rules @return array */ public function messages() { return [ 'title.required' => 'A title is required', 'body.required' => 'A message is required', ]; } 239 8.13.4.Làm việc với thông báo lỗi Sau gọi phương thức lỗi cá thể Validator, bạn nhận ví dụ Illuminate \ Support \ MessageBag, có nhiều phương pháp thuận tiện để làm việc với thông báo lỗi  Lấy thông báo lỗi cho trường A Để lấy thông báo lỗi cho trường định, sử dụng phương pháp đầu tiên: $messages = $validator->errors(); echo $messages->first('email');  Lấy tất thông báo lỗi cho trường A Nếu bạn muốn cần lấy mảng tất thông điệp cho trường định, sử dụng phương thức get: foreach ($messages->get('email') as $message) { // }  Lấy tất thông báo lỗi cho tất trường Để lấy mảng thông điệp cho tất trường, sử dụng phương thức all: foreach ($messages->all() as $message) { // }  Xác định xem thư có tồn cho trường A foreach ($messages->all() as $message) { // }  Truy xuất thông báo lỗi với định dạng A echo $messages->first('email', '

:message

');  Truy xuất tất thông báo lỗi với định dạng A foreach ($messages->all('
  • :message
  • ') as $message) { // } 240 a.Thông báo lỗi tùy chỉnh Nếu cần, bạn sử dụng thơng báo lỗi tùy chỉnh để xác nhận hợp lệ thay mặc định Có số cách để xác định tin nhắn tùy chỉnh Đầu tiên, bạn vượt qua thơng báo tùy chỉnh đối số thứ ba phương thức Validator :: make $messages = [ 'required' => 'The :attribute field is required.', ]; $validator = Validator::make($input, $rules, $messages); Trong ví dụ này,: thuộc tính giữ chỗ thay tên thực tế lĩnh vực xác nhận Bạn sử dụng chủ sở hữu địa điểm khác thư xác nhận Ví dụ: messages = [ 'same' 'size' => 'The :attribute and :other must match.', => 'The :attribute must be exactly :size.', 'between' => 'The :attribute must be between :min - :max.', 'in' => 'The :attribute must be one of the following types: :values', ];  Chỉ định thông điệp tùy chỉnh cho thuộc tính định Đơi bạn định thơng báo lỗi tùy chỉnh cho trường cụ thể Bạn làm ký hiệu "chấm" Chỉ định tên thuộc tính đầu tiên, quy tắc: $messages = [ 'email.required' => 'We need to know your e-mail address!', ];  Chỉ định tin nhắn tùy chỉnh tệp ngôn ngữ Trong nhiều trường hợp, bạn muốn định thơng điệp tùy chỉnh cụ thể thuộc tính tệp ngơn ngữ thay đưa chúng trực tiếp đến Validator Để làm vậy, thêm thông điệp bạn vào mảng tùy chỉnh tệp the resources/lang/xx/validation.php 'custom' => [ 'email' => [ 'required' => 'We need to know your e-mail address!', 241 ], ], 8.13.5.Quy tắc Xác thực Có sẵn Dưới danh sách tất quy tắc xác nhận có sẵn chức chúng: Accepted Distinct Present Active URL E-Mail Regular Expression After (Date) Exists (Database) Required Alpha File Required If Alpha Dash Filled Required Unless Alpha Numeric Image (File) Required With Array In Required With All Before (Date) In Array Required Without Between Integer Required Without All Boolean IP Address Same Confirmed JSON Size Date MIME Types String Date Format MIME Type By File Extension Different Min Unique (Database) Digits Not In URL Digits Between Numeric Timezone Dimensions (Image Files)  Accepted Lĩnh vực xác nhận phải yes, on, or true Điều hữu ích để xác nhận tính hợp lệ "Điều khoản Dịch vụ"  active_url Trường xác nhận phải URL hợp lệ theo chức checkdnsrr PHP  after:date Trường xác nhận phải giá trị sau ngày định Các ngày tháng thông qua vào chức PHP strtotime: start_date' => 'required|date|after:tomorrow' Thay qua chuỗi ngày để đánh giá strtotime, bạn định trường khác để so sánh với ngày: 242 'finish_date' => 'required|date|after:start_date'  Alph Trường phải xác nhận hợp lệ phải ký tự chữ  alpha_dash Trường xác nhận có ký tự chữ số, dấu gạch ngang dấu gạch  alpha_num Trường phải xác nhận hợp lệ phải ký tự chữ số  Array Trường xác nhận phải mảng PHP  before:date Trường phải xác nhận phải giá trị trước ngày cho Các ngày thông qua vào chức strtotime PHP  between:min,max Trường phải xác nhận phải có kích thước Các chuỗi, số học, tệp tin đánh giá theo quy tắc với quy tắc kích thước  Boolean Trường phải xác nhận hợp lệ phải dùng làm toán tử boolean Chấp nhận đầu vào đúng, sai, 1, 0, "1", "0"  Confirmed Trường phải xác nhận hợp lệ phải có trường phù hợp với foo_confirmation Ví dụ, lĩnh vực xác nhận password , trường hợp password_confirmation phải có đầu vào  Date Trường xác nhận phải ngày hợp lệ theo chức PHP strtotime  date_format:format Trường xác nhận hợp lệ phải phù hợp với định dạng định Định dạng đánh giá cách sử dụng hàm PHP date_parse_from_format Bạn nên sử dụng ngày date_format xác nhận trường, hai  different:field Trường phải xác nhận hợp lệ phải có giá trị khác với trường  digits:valu Trường xác nhận phải số phải có độ dài xác giá trị  digits_between:min,max 243 Trường phải xác nhận hợp lệ phải có chiều dài max  Dimensions Tệp xác nhận phải hình ảnh đáp ứng ràng buộc kích thước xác định thông số quy tắc: 'avatar' => 'dimensions:min_width=100,min_height=200' Những hạn chế có : min_width, max_width, min_height, max_height, width, height, ratio  Distinct Khi làm việc với mảng, trường xác nhận khơng phải có giá trị nhân 'foo.*.id' => 'distinct'  Email Trường xác nhận phải định dạng dạng địa e-mail  exists:table,column Trường phải xác nhận hợp lệ bảng sở liệu định  Basic Usage Of Exists Rule 'state' => 'exists:states'  Specifying A Custom Column Name 'state' => 'exists:states,abbreviation' Bạn định thêm điều kiện thêm vào dạng mệnh đề "where" cho truy vấn: 'email' => 'exists:staff,email,account_id,1' Những điều kiện bị phủ nhận cách sử dụng! ký tên: 'email' => 'exists:staff,email,role,!admin' Bạn vượt qua NULL NOT_NULL cho mệnh đề "where": 'email' => 'exists:staff,email,deleted_at,NULL' 'email' => 'exists:staff,email,deleted_at,NOT_NULL' Đôi khi, bạn cần phải định kết nối sở liệu cụ thể để sử dụng cho truy vấn tồn Bạn thực việc cách nhập tên kết nối vào tên bảng cách sử dụng cú pháp "dot ": 'email' => 'exists:connection.staff,email'  File Trường xác nhận phải tệp tải lên thành công 244  Filled Trường phải xác nhận khơng có sản phẩm  Image Tệp xác nhận phải hình ảnh (jpeg, png, bmp, gif svg)  in:foo,bar, Trường phải xác nhận hợp lệ phải nằm danh sách giá trị định  in_array:anotherfield Trường phải xác nhận hợp lệ phải có giá trị trường khác  Integer Trường xác nhận phải số nguyên  Ip Trường xác nhận phải địa IP  Json Trường phải xác nhận hợp lệ phải chuỗi JSON hợp lệ  max:value Trường phải xác nhận phải nhỏ giá trị tối đa Các chuỗi, số học, tệp tin đánh giá theo quy tắc với quy tắc kích thước  mimetypes:text/plain, Tệp xác nhận phải phù hợp với loại MIME định: 'video' => 'mimetypes:video/avi,video/mpeg,video/quicktime' Để xác định loại MIME tệp tải lên, nội dung tệp đọc khung cố gắng đốn kiểu MIME, khác với loại MIME cung cấp khách hàng  mimes:foo,bar, Tệp xác nhận phải có loại MIME tương ứng với tiện ích liệt kê  Basic Usage Of MIME Rule 'photo' => 'mimes:jpeg,bmp,png' Mặc dù bạn cần xác định phần mở rộng, quy tắc thực xác nhận kiểu MIME tệp cách đọc nội dung tệp đốn kiểu MIME Một danh sách đầy đủ loại MIME phần mở rộng tương ứng tìm thấy địa điểm sau: http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types 245  min:value Trường phải xác nhận phải có giá trị tối thiểu Các chuỗi, số học, tệp tin đánh giá theo quy tắc với quy tắc kích thước  not_in:foo,bar, Trường không hợp lệ phải nằm danh sách giá trị định  Numeric Trường xác nhận phải số  Present Trường phải xác nhận hợp lệ phải có liệu đầu vào để trống  regex:pattern Trường phải xác nhận hợp lệ phải phù hợp với biểu thức quy định Lưu ý: Khi sử dụng mẫu regex, cần phải định quy tắc mảng thay sử dụng phân tách đường ống, đặc biệt biểu thức quy chứa ký tự đường ống  Required Trường phải xác nhận hợp lệ phải có liệu đầu vào không trống Trường coi "trống rỗng" điều kiện sau đúng:  Giá trị không hợp lệ  Giá trị chuỗi rỗng  Giá trị mảng trống đối tượng đếm trống  Giá trị tập tin tải lên khơng có đường dẫn  required_if:anotherfield,value, Trường phải xác nhận hợp lệ phải có mặt khơng rỗng trường trường khác giá trị  required_unless:anotherfield,value, Trường phải xác nhận hợp lệ không trống trừ trường trường khác giá trị  required_with:foo,bar, Trường phải xác thực phải có mặt khơng để trống có trường khác định  required_with_all:foo,bar, 246 Trường phải xác nhận hợp lệ không để trống tất trường định khác có mặt  required_without:foo,bar, Trường phải xác thực phải có mặt khơng để trống khơng có trường khác định  required_without_all:foo,bar, Trường phải xác nhận hợp lệ phải có mặt khơng để trống tất trường khác định khơng có mặt  same:field Trường định phải khớp với trường xác nhận  size:value Trường phải xác nhận phải có kích thước phù hợp với giá trị cho Đối với liệu chuỗi, valuecor với số ký tự Đối với liệu số, giá trị tương ứng với giá trị số nguyên cho Đối với mảng, kích thước tương ứng với số lượng mảng Đối với tệp, kích thước tương ứng với kích thước tệp kilobytes  String Trường phải xác nhận phải chuỗi  Timezone Trường phải xác timezone_identifiers_list nhận múi hợp lệ theo chức PHP  unique:table,column,except,idColumn Trường phải xác nhận hợp lệ bảng sở liệu định Nếu tùy chọn cột không định, tên trường sử dụng  Chỉ định tên cột 'email' => 'unique:users,email_address'  Tùy chỉnh kết nối sở liệu Đơi khi, bạn cần thiết lập kết nối tuỳ chỉnh cho truy vấn sở liệu thực Validator Như nói trên, thiết lập unique:users quy tắc xác nhận sử dụng kết nối sở liệu mặc định để truy vấn sở liệu Để ghi đè điều này, định kết nối theo sau tên bảng cách sử dụng cú pháp "dot": 'email' => 'unique:connection.users,email_address'  Forcing A Unique Rule To Ignore A Given ID: 247 Đơi khi, bạn muốn bỏ qua ID định lần kiểm tra Ví dụ: xem xét hình "cập nhật hồ sơ" bao gồm tên người dùng, địa e-mail vị trí người dùng Tất nhiên, bạn muốn xác minh địa e-mail Tuy nhiên, người dùng thay đổi trường tên trường email, bạn không muốn có lỗi xác nhận ném người dùng chủ sở hữu địa e-mail Bạn muốn ném lỗi xác nhận người dùng cung cấp địa e-mail sử dụng người dùng khác Để nói với quy tắc để bỏ qua ID người dùng, bạn vượt qua ID tham số thứ ba: 'email' => 'unique:users,email_address,'.$user->id Nếu bảng bạn sử dụng tên cột khố khơng phải id, bạn định tham số thứ tư: 'email' => 'unique:users,email_address,'.$user->id.',user_id'  Adding Additional Where Clauses: Bạn định thêm điều kiện thêm vào dạng mệnh đề "where" cho truy vấn: 'email' => 'unique:users,email_address,NULL,id,account_id,1' Trong quy tắc trên, hàng có account_id bao gồm kiểm tra  url Trường xác nhận phải URL hợp lệ 8.13.6.Điều kiện Thêm Quy tắc Trong số trường hợp, bạn muốn kiểm tra xác nhận trường lĩnh vực có mảng đầu vào Để nhanh chóng thực việc này, thêm nguyên tắc vào danh sách quy tắc bạn: $v = Validator::make($data, [ 'email' => 'sometimes|required|email', ]); Trong ví dụ trên, trường email xác nhận có mảng liệu $  Xác thực có điều kiện phức tạp Đơi bạn muốn thêm quy tắc xác nhận dựa logic phức tạp phức tạp Ví dụ, bạn muốn yêu cầu trường trường khác có giá trị lớn 100 Hoặc, bạn cần hai trường để có giá trị định có trường khác Thêm quy tắc xác nhận nỗi đau Trước tiên, tạo cá thể Validator với rulesthat tĩnh bạn không thay đổi: 248 $v = Validator::make($data, [ 'email' => 'required|email', 'games' => 'required|numeric', ]); Hãy giả sử ứng dụng web dành cho người sưu tập trò chơi Nếu nhà sưu tập trò chơi đăng ký với ứng dụng họ sở hữu 100 trò chơi, chúng tơi muốn họ giải thích họ sở hữu nhiều trò chơi Ví dụ, có lẽ họ chạy trò chơi bán lại cửa hàng, họ thích thu thập Để thêm điều kiện thêm yêu cầu này, sử dụng phương pháp đơi ví dụ Validator $v->sometimes('reason', 'required|max:500', function($input) { return $input->games >= 100; }); Đối số truyền đến phương pháp tên trường mà xác nhận có điều kiện Đối số thứ hai quy tắc mà muốn thêm Nếu Closure thông qua đối số thứ ba trả true, quy tắc thêm vào Phương pháp giúp bạn dễ dàng tạo xác nhận có điều kiện phức tạp Bạn chí thêm xác nhận có điều kiện cho số trường lúc: $v->sometimes(['reason', 'cost'], 'required', function($input) { return $input->games >= 100; }); Lưu ý: Tham số $ đầu vào chuyển đến Closure bạn thể Illuminate \ Support \ Fluent sử dụng để truy cập đầu vào tệp bạn 8.13.7.Quy tắc xác thực tùy chỉnh Laravel cung cấp nhiều quy tắc xác nhận hữu ích; nhiên, bạn muốn định số riêng bạn Một phương pháp đăng ký quy tắc xác nhận tùy chỉnh sử dụng phương thức extend mặt tiền Validator Hãy sử dụng phương pháp nhà cung cấp dịch vụ để đăng ký quy tắc xác nhận hợp lệ:

    Ngày đăng: 02/06/2018, 12:15

    Từ khóa liên quan

    Mục lục

    • CHƯƠNG 1. ROUTING

      • 1.1. Cơ bản về Routing

        • 1.1.1. File ruote mặc định

        • 1.1.2. Các phương thức route sẵn có

        • 1.2. Tham số Route

          • 1.2.1. Tham số bắt buộc

          • 1.2.2. Tham số tùy chọn

          • 1.2.3. Các ràng buộc về biểu thức chính quy

            • 1.2.3.1. Ràng buộc toàn cục (global constraints)

            • 1.2.4. Named Route

              • 1.2.4.1. Nhóm route và các route được đặt tên

              • 1.2.4.2. Sinh URI cho các route được đặt tên

              • 1.3. Nhóm route

                • 1.3.1. Middleware

                • 1.3.2. Namespaces

                • 1.3.3. Sub-Domain Routing

                • 1.3.4. Tiền tố route (route prefix)

                • 1.4. Ngăn chặn CSRF

                  • 1.4.1. Giới thiệu

                  • 1.4.2. Loại bỏ URI từ CSRF protection

                  • 1.4.3. X-CSRF-TOKEN

                  • 1.5. X-XSRF-TOKEN

                  • 1.6. Route Model Binding

                    • 1.6.1. Ràng buộc ngầm định (Implicit Binding)

                      • 1.6.1.1. Tùy biến tên khóa

                      • 1.6.2. Ràng buộc tường minh (Explicit Binding)

                        • 1.6.2.1. Ràng buộc một tham số vào một model

                        • 1.6.2.2. Tùy biến Resolution Logic

                        • 1.6.2.3. Tùy biến hành động “Not Found”

                        • 1.7. Form Method Spoofing

    Tài liệu cùng người dùng

    Tài liệu liên quan