[Series WHMCS] Modules: Provisioning Modules - Phần 5: Loader Functions 2019-10-28

WHM.vn cho ra mắt series tự học WHMCS giúp bạn thuận lợi hơn trong việc tìm hiểu và học tập về WHMCS

  1. Trung
    Loader Functions



    [​IMG]


    Thiết lập loader functions cho phép bạn tạo một trường cung cấp những tùy chọn dropdown cho người dùng lựa chọn.

    Không giống như những "dropdown" thông thường, thiết lập trường cho phép bạn đưa ra lựa chọn được xác định trước và mã hóa cứng cho người dùng, với trường loader function sẽ hiển thị danh sách các tùy chọn được tìm và nạp tự động từ dịch vụ API từ xa.

    Một trường hợp sử dụng ví dụ cho trường hợp này là cho trường Package hoặc Plan, trong đó các giá trị cần được tìm thông qua API từ hệ thống từ xa nơi Packgae hoặc Plans được xác định. Nếu không có loader function, người dùng sẽ phải nhập thủ công Package hoặc Plan name cho sản phẩm. Với trình tải được sử dụng, WHMCS sẽ tìm dịch vụ API từ xa để biết danh sách các giá trị có thể có khi trường được hiển thị cho người dùng và cho phép họ đưa ra lựa chọn.

    Để sử dụng trình tải cho một trường, khi xác định trường trong hàm ConfigOptions, bạn cũng phải xác định hàm trình tải sẽ được gọi để điền vào trường với danh sách các tùy chọn khả dụng.

    Mỗi trường có thể có chức năng tải duy nhất của riêng chúng được xác định. Các trường này sẽ được điền với các giá trị trả về của hàm tải liên quan khi sử dụng simple mode.

    Dưới đây là ví dụ về trường xác định chức năng của trình tải với tên provisioningmodule_LoaderFunction.

    function provisioningmodule_ConfigOptions($params)
    {

    return [
    // Text field powered by the Loader function
    'Loader Populated Field' => [

    'Type' => 'text',
    'Size' => '25',
    'Loader' => 'provisioningmodule_LoaderFunction',
    'SimpleMode' => true,
    ],
    ];
    }

    Loader funtion mà bạn xác định phải được tạo và sẽ trả về một mảng của các cặp giá trị khóa.

    Khóa phải là một giá trị mà mô-đun của bạn mong muốn được nhận và giá trị phải là nhãn hiển thị thân thiện với người cho giá trị khóa. Trong nhiều trường hợp, những điều này có thể giống nhau.

    Xử lí lỗi

    Nếu kết nối đến dịch vụ API từ xa cần tìm giá trị để tải thất bại, mã của bạn sẽ bị loại.

    WHMCS sẽ nhận ra lỗi và thông báo lỗi đó cho người dùng.

    /**
    * Loader function that will populate the field in ConfigOptions
    * @return array The list of package names
    */

    function provisioningmodule_LoaderFunction() {

    // Make a call to the remote API endpoint
    $ch = curl_init('https://www.example.com/api/function');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $response =
    curl_exec($ch);

    // Check for any curl errors or an empty response
    if (curl_error($ch)) {
    throw new Exception('Unable to connect: ' . curl_errno($ch) . ' - ' . curl_error($ch));
    }
    elseif (empty($response)) {
    throw new Exception('Empty response');
    }

    // We're done with curl so we can release the resource now
    curl_close($ch);

    // Attempt to decode the response
    $packageNames = json_decode($response, true);

    // Check to make sure valid json was returned
    if (is_null($packageNames)) {
    throw new Exception('Invalid response format');
    }

    // Format the list of values for display
    // ['value' => 'Display Label']

    $list = [];
    foreach ($packageNames as $packageName) {
    $list[$packageName] = ucfirst($packageName);
    }

    return $list;
    }

    Bài viết được tham khảo và lược dịch từ: https://developers.whmcs.com/provisioning-modules/loader-functions/
    Tôi hi vọng bài viết đã giải đáp thắc mắc của bạn. Nếu chúng tôi có thể giúp đỡ gì thêm, xin vui lòng comment hoặc liên hệ email: [email protected]