Trong Laravel,Helper giúp giảm thiểu việc viết đi viết lại cùng một đoạn mã, có lúc bạn muốn tạo function để code xử lý 1 tác vụ nào đó. Muốn function này chỗ nào cũng có thể gọi được nó. Helper sẽ giúp giải quyết vấn đề này cho bạn, có thể gọi helper function trong Controller, Model, View hoặc bất kỳ file nào trong cấu trúc của Laravel. Trong hướng dẫn này, tôi sẽ trình bày một ví dụ về cách tạo và gọi helper function trong Laravel.
Tạo file
Có thể tạo file với bất kỳ tên gì bạn muốn, ở đây tôi sẽ tạo folder mới app/Helpers
và tạo file CommonHelper.php.
Trong folder app/Helpers
có thể tạo nhiều file helpers với các nhiệm vụ khác nhau.
Ví dụ thực tế, trong file vừa tạo, thêm đoạn code function chuyên xử lýthay thế số “0” bằng ký tự “+mã quốc gia” (ví dụ +84) trong số điện thoại.
1 2 3 4 5 6 7 8 | <span style="vertical-align: inherit;"><span style="vertical-align: inherit;"><?php</span></span><span style="vertical-align: inherit;"><span style="vertical-align: inherit;"> if(!function_exists('replacePhone')) {</span></span><span style="vertical-align: inherit;"><span style="vertical-align: inherit;"> function replacePhone($phone, $countryCode = '84') {</span></span><span style="vertical-align: inherit;"><span style="vertical-align: inherit;"> $phone = preg_replace('/^0?/', '+'.$countryCode, $phone);</span></span><span style="vertical-align: inherit;"><span style="vertical-align: inherit;"> trả lại điện thoại $;</span></span> } }<span style="vertical-align: inherit;"><span style="vertical-align: inherit;"> ?></span></span> |
gọi function này ra nó chưa chạy đâu, vì file CommonHelper.php
chưa được add vào trong hệ thống của Laravel.
Add vào trong file composer.json
Trong bước thứ hai này, tôi sẽ thêm đường dẫn của file helpers vào trong file composer.json
. Hãy đi tới thư mục gốc của dự án và mở file composer.json
và cập nhật mã cung cấp bên dưới vào:
1 2 3 4 5 6 7 8 9 10 11 12 | "autoload": {<span style="vertical-align: inherit;"><span style="vertical-align: inherit;"> "các tập tin": [</span></span><span style="vertical-align: inherit;"><span style="vertical-align: inherit;"> "ứng dụng/Trợ giúp/CommonHelper.php"</span></span> ],<span style="vertical-align: inherit;"><span style="vertical-align: inherit;"> "psr-4": {</span></span><span style="vertical-align: inherit;"><span style="vertical-align: inherit;"> "Ứng dụng\\": "ứng dụng/"</span></span> },<span style="vertical-align: inherit;"><span style="vertical-align: inherit;"> "bản đồ lớp": [</span></span><span style="vertical-align: inherit;"><span style="vertical-align: inherit;"> "cơ sở dữ liệu/hạt giống",</span></span><span style="vertical-align: inherit;"><span style="vertical-align: inherit;"> "cơ sở dữ liệu/nhà máy"</span></span> ] }, |
Khởi chạy Command for Composer Autoloading
Đến bước cuối cùng này, hãy mở terminal trong source Laravel lên và chạy dòng lệnh.
1 | <span class="pln"><span style="vertical-align: inherit;"><span style="vertical-align: inherit;">kết xuất nhà soạn nhạc </span></span></span><span class="kwd"><span style="vertical-align: inherit;"><span style="vertical-align: inherit;">- </span></span></span><span class="pun"><span style="vertical-align: inherit;"><span style="vertical-align: inherit;">tự </span></span></span><span class="pln"><span style="vertical-align: inherit;"><span style="vertical-align: inherit;">động tải</span></span></span> |
Sau khi chạy xong, đã có thể sử dụng helper function bằng cách gọi nó ra rồi.
Sử dụng Helper Function
Gọi trong Laravel Blade
1 | <span class="tag"><span style="vertical-align: inherit;"><span style="vertical-align: inherit;"><h2> </span></span></span><span class="pun"><span style="vertical-align: inherit;"><span style="vertical-align: inherit;"><? </span></span></span><span class="pln"><span style="vertical-align: inherit;"><span style="vertical-align: inherit;">php echo replacePhone </span></span></span><span class="pun"><span style="vertical-align: inherit;"><span style="vertical-align: inherit;">( </span></span></span><span class="str"><span style="vertical-align: inherit;"><span style="vertical-align: inherit;">'0986209305' </span></span></span><span class="pun"><span style="vertical-align: inherit;"><span style="vertical-align: inherit;">) </span></span></span> <span class="pun"><span style="vertical-align: inherit;"><span style="vertical-align: inherit;">?> </span></span></span><span class="tag"><span style="vertical-align: inherit;"><span style="vertical-align: inherit;"></h2></span></span></span> |
Gọi trong Laravel Controller
1 2 3 | <span style="vertical-align: inherit;"><span class="pln"><span style="vertical-align: inherit;">chỉ số </span></span></span><span class="kwd"><span style="vertical-align: inherit;"><span style="vertical-align: inherit;">chức năng </span></span></span><span style="vertical-align: inherit;"><span class="kwd"><span style="vertical-align: inherit;">công cộng </span></span><span class="pun"><span style="vertical-align: inherit;">() </span></span><span class="pun"><span style="vertical-align: inherit;">{ </span></span><span class="pln"><span style="vertical-align: inherit;"> $phone </span></span><span class="pun"><span style="vertical-align: inherit;">= </span></span><span class="str"><span style="vertical-align: inherit;">'0986209305' </span></span><span class="pun"><span style="vertical-align: inherit;">; </span></span><span class="pln"><span style="vertical-align: inherit;"> $data </span></span><span class="pun"><span style="vertical-align: inherit;">[ </span></span><span class="str"><span style="vertical-align: inherit;">'phone' </span></span><span class="pun"><span style="vertical-align: inherit;">] </span></span><span class="pun"><span style="vertical-align: inherit;">= </span></span><span class="pln"><span style="vertical-align: inherit;">replacePhone </span></span><span class="pun"><span style="vertical-align: inherit;">( </span></span><span class="pln"><span style="vertical-align: inherit;">$phone </span></span><span class="pun"><span style="vertical-align: inherit;">); </span></span><span class="pln"><span style="vertical-align: inherit;">chế độ xem </span></span><span class="kwd"><span style="vertical-align: inherit;">trả lại </span></span><span class="pun"><span style="vertical-align: inherit;">( </span></span><span class="str"><span style="vertical-align: inherit;">'home' </span></span><span class="pun"><span style="vertical-align: inherit;">, </span></span><span class="pln"><span style="vertical-align: inherit;">$data </span></span><span class="pun"><span style="vertical-align: inherit;">); </span></span><span class="pun"><span style="vertical-align: inherit;">}</span></span></span> |