PHP - упрощение избыточного форматирования HTML с PHP - PullRequest
0 голосов
/ 25 января 2012

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

В качестве примера я недавно разработал каталог с перечнем магазинов для Macon Mall. Это одна часть кода:

<ul>
   <li>Belk<br /><span class="both">Upper &amp; Lower Level</span><br />(478) 477-2355</li>
   <li>JCPenney<br /><span class="both">Upper &amp; Lower Level</span><br />(478) 477-8400</li>
   <li>Macy's<br /><span class="both">Upper &amp; Lower Level</span><br />(478) 471-3847</li>
   <li>Sears<br /><span class="both">Upper &amp; Lower Level</span><br />(478) 471-5555</li>
</ul>

Как я мог бы упростить процесс ввода этого, используя возможности PHP?

Надеюсь, я ясно дал понять. Не стесняйтесь задавать вопросы, если нет. Спасибо за помощь, всем!

Ответы [ 3 ]

2 голосов
/ 25 января 2012
<?php
$stores = array(
    array(
        'name' => 'Belk',
        'level' => 'Upper & Lower Level',
        'number' => '(478) 477-2355'
    ),
    array(
        'name' => 'JCPenney',
        'level' => 'Upper & Lower Level',
        'number' => '(478) 477-8400'
    ),
    array(
        'name' => 'Macy\'s',
        'level' => 'Upper & Lower Level',
        'number' => '(478) 471-3847'
    ),
    array(
        'name' => 'Sears',
        'level' => 'Upper & Lower Level',
        'number' => '(478) 471-5555'
    )
);
?>

<ul>
    <?php foreach( $stores as $store): ?>
        <li><?= $store['name']?><br /><span class="both"><?= htmlspecialchars( $store['level']) ?></span><br /><?= $store['number']?></li>
    <?php endforeach; ?>
</ul>
0 голосов
/ 25 января 2012

Если вы хотите заняться чем-то новым, я предлагаю поэкспериментировать с возможностью закрытия PHP. Из примера вы увидите, как легко вы можете полностью удалить HTML из вашего кода. Я собираюсь разработать библиотеку вокруг этого (формы и т. Д.), Но основная концепция очень проста. Начните с этой функции (не волнуйтесь, как она работает сейчас):

function h($code , $id="", $class=""){
    if ($id !== "") $id = " id = \"$id\"" ;
    $class =  ($class !== "")? " class =\"$class\"":"";
    $open = "<$code$id$class>";  
    $cls = trim(substr($code,0,strpos($code.' ',' ')));
    $close = "</$cls>"; 
    return function ($inner = "") use ($open, $close){
        return "\n$open\n$inner\n$close\n";};

}

Теперь этот код:

//Create two simple tags (Why not an entire page layout!)
$tags = array('ul','li');
foreach ($tags as $element)
   $$element = h( $element);

//Create the span tag with its class...
$span=h("span", "", "both");

//Creating an optional div with an id
$div = h("div", "test");

//Constant linebreak
$br = "<br />";

//more optional tags
$bold = h('strong');
$italic =  h('i');

// Теперь вот ваш «закрытый» HTML!

echo $ul(
   $li("belk".$br.$span("Upper &amp; Lower Level").$br."(478) 477-2355").
   $li("JCPenney".$br.$span("Upper &amp; Lower Level").$br."(478) 477-2355").
   $li("Macys".$br.$span("Upper &amp; Lower Level").$br."(478) 477-2355").
   $li("Sears".$br.$span("Upper &amp; Lower Level").$br."(478) 477-2355")
);

Прежде всего, вы заметили, что нет закрывающих тегов! Именно потому, что функция закрытия действует как булочка и закрывает ваш бургер двумя половинками! Обратите внимание, как функция закрытия

ч ()

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

Кто сказал, что мы можем остановиться там! Вы можете вложить весь HTML, который вы хотите, и все получается правильно! С этой техникой вам никогда не придется испачкать ваши взгляды необработанным HTML. Ничто не мешает вам создавать функции, которые получают массивы и отображают HTML непосредственно вокруг каждого элемента.

0 голосов
/ 25 января 2012

Звучит так, будто вы делаете все, что можете, в рамках своих ограничений.CMS может что-то исследовать.

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