Лучший способ создания динамического раздела боковой панели в Symfony 1.4 - PullRequest
0 голосов
/ 18 декабря 2011

У меня есть несколько модулей внешнего интерфейса, которые имеют ссылку на боковую панель меню. Я хочу создать эти ссылки в классе действий модуля:

  public function preExecute()
  {
    $items['plan/new'] = 'Create Plan';
    $items['plan/index'] = 'Plans Listing';
    $this->getResponse()->setSlot('sidebar', $items);
  }

Файл слота sidebar.php

    #apps/frontend/templates/sidebar.php
    <?php slot('sidebar') ?>
      <ul>
      <?php foreach($items as $url => $title) : ?>
        <li><?php echo link_to($url, $title) ?></li>
      <?php endforeach ?>
      </ul>
    <?php end_slot() ?>

layout.php:

    <?php if (has_slot('sidebar')): ?>
      <div id="sidebar"><?php include_slot('sidebar') ?></div>
    <?php endif ?>

но у меня вывод Array, как мне отрендерить мой слот?

1 Ответ

2 голосов
/ 18 декабря 2011

Вы, кажется, смешиваете слоты и частичные.В своем действии вы устанавливаете свой слот в массив, позже вы вызываете include_slot, и строковое представление - Array, это правильно.

Вы должны передавать элементы через $this->items = $items, затем в вашемдействие, если isset($items) истинно, и вызвать include_partial("sidebar", array("items" => $items)), если необходимо.Будет выполнен поиск файла с именем _sidebar.php.

. Для получения более подробной информации о том, как работает этот материал, прочитайте Внутри слоя представления: фрагменты кода часть книги sf1.4.

...