Когда вы делаете что-то вроде $this->set(compact('posts', 'tags', 'categories'));
с контроллера, только переменные, которые не null
, отправляются в представление. Так что, если вы ранее сделали $categories = $this->Categories->find('all', ...);
и он не дал результатов, то $categories
не будет, по вашему мнению. Поэтому, чтобы ответить на ваш вопрос, я просто делаю:
<?php if (isset($categories)): ?>
<ul>
<?php foreach ($categories as $category): ?>
<li>{output category information here}</li>
<?php endforeach; ?>
</ul>
<?php else: ?>
<p>No categories</p>
<?php endif; ?>
Пустые значения также не равны истине, поэтому вы можете делать такие вещи, как:
<dl>
<dt>Title</dt>
<dd><?php echo $category['Category']['title']; ?></dd>
<dt>Description</dt>
<dd>
<?php if ($category['Category']['description']): ?>
<?php echo $category['Category']['description']; ?>
<?php else; ?>
None
<?php endif; ?>
</dd>
</dl>
Короче говоря, я использую только isset()
, чтобы избежать ошибок, связанных с неустановленными переменными.
Я редко пользуюсь empty()
, и я прекрасно справлялся без него и на других языках программирования.