Отображать значок на основе записи в базе данных

У меня есть представление индекса, возвращающее таблицу из определенной модели. В этой таблице, показанной в представлении индекса, я намерен отображать значки на основе ввода поля базы данных (например, поле базы данных равно «0», значок должен быть удален с глификоном, когда он равен «1», он должен быть глификон-ок). Как лучше всего следовать идее MVC и DRY? Должна ли логика (назначение значка на основе значения) быть помещена в индексную функцию контроллера или лучше иметь логику в соответствующем представлении (или даже в модели)?


person florian    schedule 21.10.2016    source источник


Ответы (2)


Как лучше всего следовать идее MVC и DRY?

помощник. Явно не диспетчер.

Для этой задачи я написал вспомогательный метод bool().

/**
 * Bool
 *
 * @param mixed $value
 * @param array $options
 * @return string
 */
public function bool($value, $options = array()) {
    $defaults = array(
        'true' => __d('app', 'Yes'),
        'false' => __d('app', 'No'),
        'escape' => true,
    );
    $options = Hash::merge($defaults, $options);
    $return = $options['false'];
    if ($value == true) {
        $return = $options['true'];
    }
    if ($options['escape'] === true) {
        return h($return);
    }
    return $return;
}

Затем используйте его:

$this->MyHelper->bool($yourValue, [
    'true' => 'glyphicon glyphicon-ok', 
    'false' => 'glyphicon glyphicon-remove']
);

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

person floriank    schedule 22.10.2016

Вы можете сделать это, используя разные способы. Нравиться

  • Сохранение классов значков глификона в базу данных field
  • Установите классы глификонов в массив и отобразите его с вашими условиями
  • Установить условия при отображении данных в View[HTML]

ПРИМЕР [В представлении]

$data = array(/*YOUR QUERY DATA IS HERE*/);

foreach ($data as $key => $value) { /*Check your Database field is `0` or `1`*/
    $icon = 'glyphicon glyphicon-remove';

    if ($value->YOUR_FIELD==1) { /*Check with your proper field name*/
      $icon = 'glyphicon glyphicon-ok'
    }

    echo "<span class='{$icon}'></span>";
}
person Sumon Sarker    schedule 21.10.2016