2009-11-16 2 views
0

Я только начинаю с Drupal, но я довольно неуловим, как настраивать «место» всех элементов формы. У меня обычно есть много вещей, как вещи этого другого пижона, поэтому размещение и эстетика ОБЯЗАТЕЛЬНО:Drupal Custom Form Arrangement/Placement

alt text http://img20.imageshack.us/img20/3103/55744697.jpg

по умолчанию путь Друпал рендеринг форумов как вопросник (один длинный горизонтальный столбец с большим количеством пробелов) неприемлемы для моих целей. Я просматривал форумы Drupal, и у нескольких других людей такая же проблема. Основной подход состоит в том, чтобы вернуть длинную конкатенированную строку html и php-элементов управления - для моих форм это было бы безумным! Какое самое простое и чистое решение?

Есть ли способ, как в ASP.NET с page.aspx/page.aspx.cs, все разметки и элементы управления находятся в одном файле, а код в другом? Или, может быть, я могу поместить всю разметку формы в один файл с помощью только заполнителей, а в коде, это говорит Drupal, чтобы отображать каждую форму elment в ее заполнителе?

ответ

2

Я не знаю много окон, поэтому я не могу действительно относиться к примеру .NET techonology, который вы сделали, но я понимаю, что вы ожидаете, что каждое поле формы будет передано в шаблон страницы в качестве переменных , а затем сможете разместить их в шаблоне PHP ...

... если это так, то Drupal не ведет себя так, или, если быть более точным, - это не ведет себя так, с формами. Формы поступают на шаблон страницы как HTML, и вам нужно использовать CSS для их форматирования в соответствии с вашими потребностями. HTML довольно хорошо структурирован, с каждым полем в его собственном <div> и несколькими удобными классами, которые упрощают работу. Если этого недостаточно, для удовлетворения ваших потребностей вы можете вмешаться в процесс, создающий формы заранее с помощью серии крючков.

Действительно, Drupal имеет очень специфический Form API (or FAPI), чтобы иметь дело с созданием формы, управлением, проверкой и подачей. Это может показаться слишком сложным для новичков, но FAPI действительно является ключевым элементом для высокомодульного дизайна Drupal.

Возможно, вы посмотрите на это answer с этой недели, так как это может быть полезно для вас, чтобы понять, как работает система FAPI в ее основе. Если вы новичок в мире Drupal, я бы предложил вам потратить некоторое время на чтение документации, особенно theming guide и hooking system. Drupal требует достаточно знаний о своей внутренней работе, чтобы быть гибкой платформой для разработки, но результат инвестиций в «изучение» - это ИМО - стоит того.

С другой стороны: если вы пытаетесь начать с ваших форм с нуля, вам может быть интересно взглянуть на webform module (не работает для всех потребностей, но является довольно часто используемым инструментом).

HTH, и добро пожаловать в комплекс, но полезный мир Друпала! :)

1

(Как отмечает макинтош), Форма API обеспечивает элементы формы, выводятся с использованием согласованного формата:

<div id="ELEMENT-ID" class="form-item"> 
    <label> ... </label> 
    <input type="INPUT TYPE" /> 
    <div class="description"> ... </div> 
</div> 

.. так что если вы хотите создать специальный макет, это, как правило, только случай применяя соответствующий CSS.

Вы можете достичь компоновки в приведенном выше примере, ограничив ширину класса «.form-item» и применяя «float: left». Элементы, которые не соответствуют правилу, всегда могут быть индивидуально оформлены.

+0

BTW, отличное место, чтобы узнать о Drupal is freenode IRC .. есть канал с именем # drupal-support, который отлично подходит для такого типа вопросов. – codeinthehole