Ввод PHP в html div - PullRequest
       6

Ввод PHP в html div

0 голосов
/ 14 апреля 2020

Как я могу оставить флажки выравнивания по левому краю и надписи к ним, которые расположены в переменной PHP с помощью HTML и CSS

Я пробовал вот так

$variableWithCheckboxes = '<div id="checkboxControl'. $variableWithLables['_field']['id'].'"'. $variableWithCheckboxes.'</div>';

но это не работает

Любые другие рекомендации, кроме css и HTML?

Ответы [ 2 ]

0 голосов
/ 15 апреля 2020

попробуйте

<?php
if(isset($res)){    
?>
    <div id="checkboxControl <?php echo $variableWithLables['_field']['id']; ?>"> </div>
<?php 
    }
?>
0 голосов
/ 14 апреля 2020

При выводе от html до php существует несколько общих подходов.

  1. Шаблоны. Наиболее распространенным решением для систем типа Extensible CMS является создание шаблонов (Wordpress, Joomla, Drupal и др. c). Вы пишете html файл с большим количеством <?php echo $variable ?> внутри них. Вот некоторые замечательные расширения php, которые делают это намного проще, такие как Twig. Это сделано для того, чтобы шаблоны можно было повторно использовать и легко настраивать в многоцелевой среде CMS. Это, вероятно, самый лучший и наиболее используемый вариант. Чтобы узнать об этом, загляните в Twig или получите книгу по интерфейсу WordPress.

  2. Raw html в коде. Это то, что вы пытаетесь, и, как вы можете видеть, не идеально. Он подвержен ошибкам и труден для чтения.

  3. Для выделенных сайтов или небольших сайтов, где система шаблонов будет чрезмерной, я хотел бы использовать своего рода наизнанку подход к созданию html. У меня есть несколько вспомогательных функций, которые я использую для создания динамического c html в хорошем формате, и его легко читать. Пример:

function buildAttr($attr)
{
  assert(is_array($attr), 'abilities passed to buildAttr should be an array().');
  $attr_string = '';
  foreach ($attr as $name => $value)
  {
    if (is_numeric($name))
    {
      continue;
    }
    if (is_array($value))
    {
      $value = implode(' ', $value);
    }
    $attr_string .= ' ' . $name . '="' . $value . '"';
  }

  return $attr_string;
}

function htmlWrap($tag, $content, $attr = array())
{
  return '<' . $tag . buildAttr($attr) . '>' . $content . '</' . $tag . '>';
}

function htmlSolo($tag, $attr = array())
{
  return '<' . $tag . buildAttr($attr) . '>';
}

Использование этого будет выглядеть примерно так:

$output = '';

// Label.
$attr = array('class' => array('label'), 'for' => $name);
$output .= htmlWrap('label', $this->label, $attr);

$attr = array();
$attr['name'] = $this->id;
$attr['type'] = 'text';
$output .= htmlWrap('input', '', $attr);

// Wrapper.
$attr = array('class' => array('field', 'text', $name));
$output = htmlWrap('div', $output, $attr);
return $output;

Важное замечание, что каждый раз, когда вы выводите пользовательский ввод как html, вам нужно для защиты от атак XSS и HTML. Поэтому любой пользовательский ввод, который вы передаете в эти функции, должен сначала пройти через функцию очистки. Что-то вроде:

function sanitize($data)
{
  if (is_null($data))
  {
    return '';
  }
  assert(is_string($data) || is_numeric($data) || is_bool($data), 'Non-string passed to sanitize!');

  $data = trim($data);
  $data = htmlspecialchars($data, ENT_IGNORE | ENT_QUOTES);
  return $data;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...