как добавить помощник вида в Zend - PullRequest
1 голос
/ 18 сентября 2010

Я хочу добавить пользовательский помощник вида в Zend Framework, как это:

  1. Я поместил в application.ini этот код:

    includePaths.library = APPLICATION_PATH "/../library"
    и создайте каталог библиотеки в корне myproject

  2. создать помощник вида TabEntry.php в каталоге библиотеки

    Класс Zend_View_Helper_TabEntry расширяет Zend_View_Helper_Abstract {

    публичная функция TabEntry () {

    }
    } * * Тысяча двадцать-один

  3. создать еще один помощник вида TabEntries.php в каталоге библиотеки

    класс Zend_View_Helper_TabEntries расширяет Zend_View_Helper_TabEntry {

    публичная функция TabEntries () {

    }
    }

  4. когда в моем phtml используется $ this-> TabEntries () get error
  5. в Bootstrap.php я добавляю код:
    $ view-> addHelperPath ('MyView / Helpers', "library_MyView_Helpers");
    $ viewRenderer = Zend_Controller_Action_HelperBroker :: getStaticHelper ('ViewRenderer'); $ ViewRenderer-> setView ($ вид);

Ответы [ 4 ]

2 голосов
/ 18 сентября 2010

В соответствии со структурой приложения ZF-кодирования правильная версия будет:

В application.ini:

resources.view.helperPath.Your_View_Helper = "Your/View/Helper"

Тогда помощники: (не знаю, зачем вам нужен другой абстрактный класс):

// library/Your/View/Helper/TabEntry/Abstract.php

class Your_View_Helper_TabEntry_Abstract extends Zend_View_Helper_Abstract {
    public function tabEntry($param1, $param2) {} // note the lower case here
}

// library/Your/View/Helper/TabEntries.php

class Your_View_Helper_TabEntries extends Your_View_Helper_TabEntry_Abstract {
    public function tabEntries($param1, $param2) {...} // note the lower case
}

В представлении:

$this->tabEntries();

Важно: call_user_func и файловая система Linux чувствительны к регистру.

0 голосов
/ 05 апреля 2018

Добавить помощника в Zend 3

создать вспомогательный класс Helper.php в модуле / Admin / src / View / Helper / Helper.php

после этого добавить следующий код в:

<?php

namespace Admin\View\Helper;
use Zend\View\Helper\AbstractHelper;
class Helper extends AbstractHelper {
    public function test($messages) {
        echo $messages;
    }
}

module / Admin (имя вашего модуля) /config/module.config.php

использовать Zend \ ServiceManager \ Factory \ InvokableFactory;

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

вызов на просмотр

<?php
$this->mainHelper()->test('Abhishek');
?>
0 голосов
/ 26 октября 2011

Zend Framework / находится в /var/www/html/you

1) you/application/views/helpers/<Magic is here>

2) Поместите этот файл с именем "Stuff.php" в путь выше

<?php
class Zend_View_Helper_Stuff extends Zend_View_Helper_Abstract 
{
  public function stuff()
  {
    $output = "IK BEN View Helper en DAN????";
    return htmlspecialchars($output);    
  }
}

?>

3) Перейдите к вам / application / views / scripts / index / index.phtml <?= $this->stuff(); ?>:)

4) вывод будет $ output.

0 голосов
/ 27 сентября 2010

Дважды проверьте код, который у вас есть в вашей начальной загрузке

в Bootstrap.php Я добавляю немного кода:

$view->addHelperPath('MyView/Helpers', "library_MyView_Helpers");
$viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer');
$viewRenderer->setView($view);

Должно быть больше похоже на

$view->addHelperPath('My/View/Helpers', "My_View_Helpers");
$viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer');
$viewRenderer->setView($view);

Со своей стороны я использую:

// Add path to project view helpers
Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer')->initView();
Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer')->view
    ->addHelperPath('Julien/View/Helper', 'Julien_View_Helper')
    ;

и имею такой класс в Julien/View/Helper/Percent.php

<?php
class Julien_View_Helper_Percent extends Zend_View_Helper_Abstract {

    public function percent ( $percentage ) {
        return $percentage * 100 . '%';
    }
}

, затем вызываю в представлении

<?= $this->percent(0.255) ?>

выведет

25.5%

, и мой макет каталога выглядит как

project/
    lib/
        Julien/
            View/
                Helper/
                     Percent.php
        Zend/
    modules/
public/
   .htaccess 
   index.php
...