1

我想在 zend 框架中添加自定义视图助手,如下所示:

  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() 时出现错误
  5. 在 Bootstrap.php 我添加了一些代码:
    $view->addHelperPath('MyView/Helpers', "library_MyView_Helpers");
    $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer'); $viewRenderer->setView($view);
4

4 回答 4

2

根据 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_funcLinux 文件系统区分大小写。

于 2010-09-18T15:22:47.530 回答
0

仔细检查引导程序中的代码

在 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
于 2010-09-27T18:32:45.247 回答
0

Zend 框架/位于/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。

于 2011-10-26T19:42:21.070 回答
0

在zend 3中添加助手

在 module/Admin/src/View/Helper/Helper.php 中创建帮助程序类 Helper.php

之后添加以下代码:

<?php

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

模块/管理员(您的模块名称)/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');
?>
于 2018-04-05T11:22:34.657 回答