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

#cakephp #cakephp-2.5

#cakephp #cakephp-2.5

Вопрос:

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

Ответ №1:

Каков наилучший подход для следования идее 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 () для выполнения проверки, но для вывода всей вашей строки, независимо от того, что вы хотите отобразить. Вы не показали никакого кода, так что это всего лишь предположение.

Ответ №2:

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

  • Сохранение классов значков glyphicon в базе данных field
  • Установите классы glyphicon в массив и отобразите его с вашими условиями
  • Задайте условия при отображении данных в представлении[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>";
}