Стратегия / рекомендации по применению CFPARAM - PullRequest
1 голос
/ 07 января 2010

Каждый раз, когда я использую cfparam, у меня возникает ощущение, что я помещаю его в неправильное место или вообще неправильно использую.

Рассмотрим этот пример, скажем, нам нужно показать новую форму сущности (с входными значениями по умолчанию):

<cfparam name="form.attachLink" default="" />
<input type="text" name="attachLink" value="#HTMLEditFormat(form.attachLink)#" />

Даже этот простой вопрос заставляет меня задуматься над следующими вопросами по cfparam :

  1. Должен ли я использовать его до точного места использования? Разве это не нарушит идею Модель / Представление?
  2. Или я должен сгруппировать их где-нибудь в шаблоне модели, или, может быть, поверх представления?
  3. Когда paramin 'данные формы , может быть, лучше использовать StructKeyExists (форма, "attachLink")? Конечно, я делаю это (плюс проверка) при обработке отправленной формы, но для свежей формы это может быть полезно - для таких параноидальных людей, как я.
  4. Где еще имеет смысл использовать этот тег? Я знаю одно действительно полезное место: пользовательские теги, хотя сами они становятся все более и более устаревшими.

Спасибо.

Ответы [ 3 ]

2 голосов
/ 07 января 2010

С риском звучать бесполезно: «Это зависит».

Я думаю, что это немного усложняется тем фактом, что CFPARAM можно использовать для установки значений по умолчанию, а также для проверки типа переменной и выдачи ошибки, когда она не совпадает. Тем не менее, я почти всегда использую его только для первого. Что касается последнего, многое из этого было отнесено к аргументам компонентов.

Одно из наиболее полезных применений - на странице действий для формы с флажками.

<cfparam name="form.myCheckbox" default="" />

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

Что касается того, где их разместить, когда я их использую, я почти всегда помещаю их в верхнюю часть файла cfm, но это, вероятно, просто вещь стиля. Если вы добавите их в свой код, я думаю, что вы столкнетесь со случаями, когда переменная будет установлена, и вы не будете знать, где это произошло.

Конечно, я использую Model-Glue исключительно в эти дни. Не очень полезно для CFPARAM.

0 голосов
/ 08 января 2010

Я думаю о cfparam так же, как и о объявлениях переменных. Я всегда объявляю свои переменные как можно ближе к месту, где я собираюсь использовать переменную. В мире Coldfusion я использую тег cfparam прямо перед тегом cfform.

Похоже, вы используете MVC Framework. Я не вижу, как это влияет на использование cfparam. Модель, где вы получаете данные. CFParam не зависит от модели.

0 голосов
/ 07 января 2010

Если вы собираетесь ссылаться на переменную в значении формы, вы должны использовать cfparam с разумным значением по умолчанию (даже пустым), чтобы гарантировать, что переменная существует. Однако, если на переменную ссылаются только при обработке формы, я бы пропустил cfparam (излишне, поскольку вы не устанавливаете значение в форме) и вместо этого использовал бы structKeyExists (scope, "key") на этапе обработки формы.

В инфраструктуре MVC у вас может быть возможность установить значения по умолчанию другим способом. В этом случае вы, скорее всего, ссылаетесь не на область формы напрямую, а на область, управляемую платформой. Fusebox использует область «события». При загрузке страницы среда Fusebox объединяет область URL-адреса и область FORM в область EVENT. Если вас беспокоит «взлом MVC», я рекомендую установить и / или протестировать необходимые переменные в области действия вашей платформы (в моем случае EVENT) в контроллере MVC (с использованием рекомендованного метода вашей платформы), прежде чем отображать форму в вид. Скорее всего, для этого вам не понадобится cfparam.

...