Чисто ли иметь условные выражения в представлениях Codeigniter? - PullRequest
3 голосов
/ 25 марта 2011

В настоящее время я пытаюсь максимально отделить мои виды от контроллеров.В идеале я хотел бы иметь минимальный PHP на мой взгляд, за исключением имен переменных и т. Д. Эти переменные передаются из контроллера.

Но чисто ли иметь в представлении операторы IF (или тому подобное)?

Например

// Controller 

$data['status'] = 'pass';

$this->load->view("Status Page", $data);

И ..

<!-- View -->
<div>
    <?php if($status === 'pass') { ?>
    <img src='passIcon.jpg'>Pass
    <?php } else { ?>
    <img src='failIcon.jpg'>Fail
    <?php } ?>
</div>

Самым близким, что я нашел к ответу на SO, было Условные обозначения в представлениях

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

Есть ли способ избежать этого перехода?Или в представлениях всегда будут фрагменты PHP?

Ответы [ 2 ]

12 голосов
/ 25 марта 2011

С моей точки зрения, задача представления состоит в том, чтобы визуализировать данные, поэтому, если вам нужны условия для их точного отображения, тогда непременно сделайте это, поскольку это позволит избежать дублирования HTML-кода, чтобы разделить его на 2 представления и протестировать вар в контроллере.

Кроме того, другой хорошей практикой будет использование альтернативного синтаксиса в представлении, поскольку это значительно упрощает отслеживание результатов. Например:

<!-- View -->
<div>
    <?php if ( $status === 'pass' ) : ?>
        <img src='passIcon.jpg'>Pass
    <?php else : ?>
        <img src='failIcon.jpg'>Fail
    <?php endif; ?>
</div>

Однако, взяв ваш пример немного дальше, вы можете установить src в контроллере (я должен признать, что будут времена, когда вам понадобятся условные представления):

Контроллер

$data['src'] = ( $data['status'] === 'pass' ) ? 'passIcon.jpg' : 'failIcon.jpg';
$data['text'] = ( $data['status'] === 'pass' ) ? 'Pass text' : 'Fail text';

$this->load->view("Status Page", $data);

View

<!-- View -->
<div>
    <img src='<?php echo $src; ?>'><?php echo $text; ?>
</div>
1 голос
/ 25 марта 2011

Различные структуры имеют разные принятые практики; в Django, например, не одобряется включение какой-либо логики в файлы шаблонов.

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

В конечном счете, это ваш выбор, но для меня простые условные выражения и циклы хороши в шаблонах.

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