Доступ к переменной по умолчанию в атрибутах cfmodule

Я использую cfmodule с шаблоном и надеюсь получить доступ к значениям модуля по умолчанию, даже если будут переданы другие значения. Возможно ли это каким-то образом? При выводе области атрибутов просто передаются все данные без указания значения.

Пример.

<cfmodule fielda="#data#" template="myTemplate.cfm" />

мой шаблон.cfm

<cfparam name="attributes.data" default="1" />

Предположим, что данные имеют значение 2. Возможно ли из myTemplate.cfm узнать, что значение по умолчанию равно 1?


person Leeish    schedule 10.03.2021    source источник
comment
Насколько я знаю, невозможно получить набор значений по умолчанию <cfparam> в любом контексте.   -  person Adrian J. Moreno    schedule 10.03.2021
comment
Согласованный. Я думаю, что лучшее, что вы могли бы сделать, это смоделировать это, продублировав структуру аргументов (или только имена ключей) до выполнения любых cfparam name="arguments.." операторов. Затем динамически сравните его с содержимым arguments после параметров. Любые общие ключи двух структур являются аргументами, которые были явно переданы в модуль. Не фантастическое решение, но, вероятно, достигло бы цели.   -  person SOS    schedule 12.03.2021
comment
@SOS Я думал об этом. Мы пытаемся получить самодокументируемое решение. Мы собирались хранить значения по умолчанию в базе данных с компонентами и загружать значения по умолчанию в параметры. Но затем, чтобы увидеть документацию, мы должны зайти в базу данных. Сохранив его в коде, он будет там во время работы, но тогда мы не сможем ссылаться на него с некоторыми другими вещами, которые мы пытаемся сделать в нашей CMS. Это был только один вариант, который не выглядел как вариант.   -  person Leeish    schedule 13.03.2021


Ответы (1)


Не совсем возможно. Все, что может сделать шаблон, это включить в него кучу HTML-кода.

Но решение простое: вместо этого используйте .cfc. Вместо того, чтобы <cfmodule> создавать шаблон, вызовите функцию, которая выводит HTML. Если ему не отправлен параметр mode=diagnostic или что-то в этом роде, в этом случае он ничего не выводит, а вместо этого возвращает структуру.

Таким образом, вы можете вызвать функцию в диагностическом режиме, прочитать структуру или вызвать ее в режиме по умолчанию и вывести данные.

Имеет смысл?

person lavrys    schedule 10.03.2021
comment
Ага. У меня есть сложная проблема, которую я пытаюсь решить с помощью пользовательской CMS, в которой я хочу знать, какие данные использует модуль. Пример У меня есть большой объект данных, переданный в модуль. Однако модуль использует cfparam со значением по умолчанию default={prop1='',prop2=''}. (Мы в основном используем это, чтобы документировать, какие реквизиты необходимы от объекта.) Передаваемый объект может иметь prop1 и prop2, но иметь и другие свойства. Я хотел бы иметь возможность определить с помощью кода, что модуль имеет prop1 и prop2, определенные без другой строки кода для сортировки кеша/регистрации этого. Я надеялся, что смогу получить доступ к этой части. - person Leeish; 11.03.2021