Обучающие материалы | Nwicode CMS

Модуль Мой аккаунт

Вы можете расширять My accountполя для своих модулей.

Важно Account::addFields использовать в следующем хуке отinit.php

<?php

use Nwicode\Hook;

Hook::listen("mobile.controller.init", "mymodule_extendedfields", "extendedFields");

Snimokekrana2019-05-05v11.43.48.png
<?php
Account::addFields(string $moduleName, array $fields, function $populateCallback, function $saveCallback);

<?php

use Nwicode\Account;

function extendedFields ($payload) {
    Account::addFields(
        "MyModule",
        [
            [
                "type" => "spacer",
                "key" => "mymodule_spacer",
            ],
            [
                "type" => "divider",
                "key" => "mymodule_divider",
                "label" => __("Divider #1"),
            ],
            [
                "type" => "text",
                "key" => "mobile_number",
                "label" => __("Mobile number"),
            ],
            [
                "type" => "textarea",
                "key" => "address",
                "rows" => "3",
                "label" => __("Address"),
            ],
            [
                "type" => "number",
                "key" => "age",
                "min" => "1",
                "max" => "100",
                "step" => "1",
                "label" => __("Age"),
            ]
        ],
        "populateMyFields",
        "saveMyFields"
    );
    return $payload;
}


Различные типы полей

Тип использование
spacer
Это 20px пробел.
divider
Это заголовок разделителя, он использует item item-divider item-divider-custom классы
text
Простой ввод текста
TextArea Текстовая область с настраиваемыми строками
number
Входной диапазон с minmax и step настройки
select
Выпадающий селектор с options: {["value": "single", "label": "Single"], ["value": "married", "label": "Married"]}

Примеры обратных вызовов

$ PopulateCallback называется перед созданием поля, он используется для заполнения их с фактическими значениями и / или по умолчанию.

Примечание: $ populateCallback должен быть чистой функцией, доступной из любого места, рекомендуется объявить ее внутри init.php

<?php

function populateExtended ($context, $fields) 
{
    /**
     * @var $context
     * [
     *   "application" => (current application),
     *   "request" => (current request),
     *   "session" => (user session)
     * ]
     * @var $fields
     * [
     *    [
     *       "key" => "#Field_key#",
     *       "value" => "#Field_value", // defaults empty
     *    ],
     *    [...]
     * ]
     */

    $customer = $context["session"]->getCustomer();
    foreach ($fields as &$field) {
        switch ($field["key"]) {
            case "mobile_number":
                $field["value"] = $customer->getMobileNumber();
                break;
            case "address":
                $field["value"] = $customer->getAddress();
                break;
            case "age":
                $field["value"] = $customer->getAge();
                break;
        }
    }

    return $fields;
}

$ SaveCallback называется перед созданием поля, он используется для заполнения их с фактическими значениями и / или по умолчанию.

Примечание: $ saveCallback должен быть чистой функцией, доступной из любого места, рекомендуется объявить ее внутри init.php

<?php

function saveExtended ($context, $fields) 
{
    /**
     * @var $context
     * [
     *   "application" => (current application),
     *   "request" => (current request),
     *   "session" => (user session)
     * ]
     * @var $fields
     * [
     *    [
     *       "key" => "#Field_key#",
     *       "value" => "#Field_value", // defaults empty
     *    ],
     *    [...]
     * ]
     */

    $customer = $context["session"]->getCustomer();
    foreach ($fields as $field) {
        switch ($field["key"]) {
            case "mobile_number":
                $customer->setMobileNumber($field["value"]);
                break;
            case "address":
                $customer->setAddress($field["value"]);
                break;
            case "age":
                $customer->setAge($field["value"]);
                break;
        }
    }

    // Finally save the customer
    $customer->save();

    return $fields;
}



Вернуться

Есть вопросы — спрашивайте!

Наши специалисты помогут Вам и окажут бесплатную консультацию

Документация

Новости 1 - 20 из 51
Начало | Пред. | 1 2 3 | След. | Конец