Выберите с отступом, а также отформатированные элементы в PHP - PullRequest
4 голосов
/ 21 июля 2009

Мне нужно показать поле выбора, которое будет отображать все категории и подкатегории за один раз.

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

Как мы можем создать такой список выбора в PHP?

У меня есть что-то подобное в админ-панели Magento Ecommerce (www.magentocommerce.com).

Категории извлекаются из БД и иногда могут доходить до 6 уровней, например:

` Cat 1

Cat 1A

Cat 1B

Cat 2

Cat 2A

Cat 2AA

Cat 2AB

Cat 2AC

Cat 2ACA

Кошка 3`

и т.д.. Все категории, имеющие подкатегории, должны быть выделены жирным шрифтом, а все подкатегории - курсивом.

Надеюсь, теперь стало яснее, чего я хочу достичь.

Ответы [ 5 ]

5 голосов
/ 21 июля 2009

Вы должны использовать элемент optgroup в вашем элементе select:

<select name="Namen" size="6">
  <optgroup label="Namen mit A">
     <option label="Anna">Anna</option>
     <option label="Achim">Achim</option>
     <option label="August">August</option>
  </optgroup>
  <optgroup label="Namen mit B">
     <option label="Berta">Berta</option>
     <option label="Barbara">Barbara</option>
     <option label="Bernhard">Bernhard</option>
  </optgroup>
</select>

Затем вы можете оформить их с помощью

optgroup {
    font-weight:bold;
    /*etc*/
}
0 голосов
/ 21 июля 2009

Это не имеет ничего общего с PHP, вам нужен HTML и CSS для его стилизации.

Вы можете составить список с такими обозначениями:

<select class="category">
    <option>Category</option>
    <optgroup label="Optional label">
        <option>More options</option>
    </optgroup>
</select>

Затем вы можете оформить его так:

.category option {
    font-weight: bold;
}

.category optgroup option {
    font-style: italic;
}
0 голосов
/ 21 июля 2009

Посмотрите в источнике HTML, где у вас есть что-то вроде того, что вы хотите, тогда вы знаете, какой код php будет выводить. И тогда ты должен сделать это. Как именно это делается, зависит от того, как хранятся ваши данные и т. Д. Если ваш вопрос не решен, уточните

0 голосов
/ 21 июля 2009

используйте тег optgroup, чтобы выделить категории.

<html>
    <body>
            <select>
                    <optgroup label="Numbers">
                            <option value="1">One</option>
                            <option value="2">Two</option>
                            <option value="3">Three</option>
                    </optgroup>
                    <optgroup label="Letters" disabled="true">
                            <option value="4">A</option>
                            <option value="5">B</option>
                            <option value="6">C</option>
                    </optgroup>
            </select>
    </body>

0 голосов
/ 21 июля 2009

Ну, вы можете просто добавить пару символов перед каждым элементом, для которого хотите сделать отступ, например:

<select id="mySelect">
    <option value="topLevelFoo">Foo</option>
    <option value="subBar">& nbsp;& nbsp;Bar</option>
    <option value="subBaz">& nbsp;& nbsp;Baz</option>
</select>

Это немного уродливо, но этого должно быть достаточно для достижения вашей цели (хотя бы визуально). Другой распространенный способ сделать это - использовать дефисы для обозначения этих типов выбора.

Удачи!

Редактировать: э-э, похоже, SO редактор отображает элементы & nbsp;. Я добавил пробелы после амперсанда, чтобы обойти это, но пробелы в вашем коде фактически не появляются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...