Создание помошника (View Helper) для Zend Framework 3

Задача: естественным для Zend Framework способом выводить в шаблоне phtml некий HTML текст генерируемый на сервере.

Решение: создадим helper (помошник вида), на примере вывода каких то сообщений пользователю.

1) В настройках модуля анонсируем помошника:

            'view_helpers' => [                    
                    'factories' => [View\Helper\Messages::class => InvokableFactory::class],                   
                    'aliases' => ['mess' => View\Helper\Messages::class],                                
                ],

2) Создаем класс /module/Application/src/View/Helper/Messages

<?php
namespace Application\View\Helper;
use Zend\View\Helper\AbstractHelper;
use Application\Common\CommonFunctions;
// Этот класс помощника отображения разных сообщений пользователю (статичных)
class Messages extends AbstractHelper {  
public function __construct() {    
}    
public function renderErrorMessages() {    
    foreach (CommonFunctions::$err as $msg) {
        echo '<div class="alert alert-warning alert-dismissible fade show" role="alert">';
        echo "<strong>$msg</strong>";
        echo '<button type="button" class="close" data-dismiss="alert" aria-label="Close">';
        echo '<span aria-hidden="true">×</span>';
        echo '</button>';
        echo '</div>';
    };
}
    
}

3) В нутри шаблона layout.phtml теперь можно написать чтото вроде:

        <div class="container-fluid">
            <?php echo $this->mess()->renderErrorMessages(); ?>
            <?= $this->content ?>
            <hr>
            <footer>
                <p>© 2011 - <?= date('Y') ?> by <a href="https://грибовы.рф">Pavel Gribov</a></p>
            </footer>
        </div>

Комментарии:

3 мысли о “Создание помошника (View Helper) для Zend Framework 3”

  1. Подскажите, пожалуйста, а как Вы организовали библиотеку общих функций?
    Application\Common\CommonFunctions
    Как к ней можно подключаться без оверхеда?

      1. Ну, я на том уровне, что знаю подключение через include, requiere_once. Читал про zend 3, что это вредно. И у меня теперь каша в голове как правильно подключать, то ли через фабрику классов, то ли в modules.config.php, то ли где-то ещё. И как это будет идеологически правильно, и без оверхеда?

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.