Могу ли я использовать основной код HTML в Zend View Helper? Если да, то как я могу вызвать этого помощника? - PullRequest
0 голосов
/ 24 февраля 2012

У меня есть одно определение java-скрипта в виде (.phtml) файла.Этот Java-скрипт имеет динамические параметры, такие как имя контроллера и имя действия.Чтобы избежать дублирования кода, я хочу поместить этот код в вспомогательный файл.

Теперь возможно ли использовать чистый html и javascript код в файле помощника?Если да, то как я могу вызвать этого помощника в моем файле просмотра?

Или есть ли другой лучший способ сделать это?

1 Ответ

3 голосов
/ 24 февраля 2012

A view helper не будет решением в этом случае. Скорее всего, вы захотите использовать частичный (который является помощником вида). Помощник вида - это то, что обычно используется для return части данных для представления. partial() или partialLoop() используется для отображения общего HTML в представлении (фрагменты HTML, которые могут быть повторно использованы в нескольких представлениях).

Вот пример простого помощника вида, обратите внимание, что он возвращает результат:

<?php

class Zend_View_Helper_FormatDate extends Zend_View_Helper_Abstract
{
    public function FormatDate($date) {

        if ($date != NULL) {
            $formatedDate = new DateTime($date);
            $format = $formatedDate->format('M d, Y');

            return $format;
        } else {
            return '';
        }
    }

}
//This is called in the view like any other function
<?php echo $this->FormatDate($date) ?>

Теперь часть будет содержать Html (я уверен, JS тоже будет работать)

Вот часть, которая использует помощники вида

fieldset><legend>Dates and Qualifications</legend>
    <table>
        <tr>
            <td>Birth Date: </td><td><?php echo $this->escape($this->FormatDate($this->bdate)) ?></td>
        </tr>
        <tr>
            <td>Seniority Date: </td><td><?php echo $this->escape($this->FormatDate($this->sendate)) ?></td>
        </tr>
    </table>
    <table>
        <tr>
            <td>I'm a Lead:</td><td><?php echo $this->escape(ucfirst($this->ToBool($this->lead))) ?></td>
        </tr>
        <tr>
            <td>Lead Date:</td><td><?php echo $this->escape($this->FormatDate($this->ldate)) ?></td>
        </tr>
        <tr>
            <td>I'm an Inspector:</td><td><?php echo $this->escape(ucfirst($this->toBool($this->inspector))) ?></td>
        </tr>
        <tr>
            <td>Admin Login:</td><td><?php echo $this->escape(ucfirst($this->toBool($this->admin))) ?></td>
        </tr>
    </table>
</fieldset>

вызовите это частичное в вашем скрипте вида, первый аргумент - это путь частичного второй аргумент - данные, используемые в частичном

<?php echo $this->partial('_dates.phtml', $this->memberData) ?>

данные отправляются из действия контроллера как обычно $this->view->memberData = $memberData
Это обычное использование, но не единственный способ получить данные в частичную.

в этом примере частичное находится в местоположении по умолчанию /application/views/scripts

Надеюсь, это поможет

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