【问题标题】:Zend Framework View Helper - how to get it to workZend Framework View Helper - 如何让它工作
【发布时间】:2012-03-28 11:10:35
【问题描述】:

我正在尝试开始使用 Zend Framework,遵循快速入门项目并尝试开始我自己的新模块。 我正在尝试实现视图助手,但我不断收到以下消息: 消息:方法 formDate 不存在

堆栈跟踪的最后一个条目:

0 D:\work\quickstart_zend\application\views\scripts\users\register.phtml(38): Zend_Form_Element->__call('formDate', Array)

我的文件结构如下:

quickstart_zend + 应用 + 配置 + 控制器 [...] + 意见 + 帮手 + 脚本 [...] + 图书馆 + 应用 + 表格 + 元素 日期.php + 查看 + 帮手 表单日期.php + 公开

我在我的 public/Bootstrap.php 中添加了这个方法:

受保护的函数 _initActionHelpers() { Zend_Controller_Action_HelperBroker::addPath(APPLICATION_PATH.'/../library/Application/View/Helper', 'Application_View_Helper'); Zend_Controller_Action_HelperBroker::addPrefix('Application_View_Helper'); }

我的 application.ini 中也添加了:

autoloaderNamespaces[] = "应用程序" resources.view.helperPath.Application_View_Helper = APPLICATION_PATH "/../library/Application/View/Helper/"

我已经看到了一个版本,也尝试过使用 resources.view.helperPath.Application_View_Helper_,但似乎没有任何效果。

当然,我有一个 Users.php 表单,我在其中创建了一个“日期”元素:

// 添加一个 dateOfBirth 元素 $element = new Application_Form_Element_Date('dateOfBirth'); $this->addElement($element);

当然,我有一个 Users.php 表单,我在其中创建了一个“日期”元素:

// 添加一个 dateOfBirth 元素 $element = new Application_Form_Element_Date('dateOfBirth'); $this->addElement($element);

在我的视图脚本中,错误出现的地方:

dateOfBirth->formDate() ?>

为了让它工作,我缺少什么? :-( 到目前为止,我已经花了一天时间寻找解决方案

【问题讨论】:

  • 要调用视图助手,您应该在视图 ($instanceOfZendView->formDate()) 上调用该方法,但您是在 Zend_Form_Element_Date 上调用它。所以不要这样。
  • 谢谢,我明白了,就是这样!

标签: zend-framework view frameworks helpers


【解决方案1】:

您收到此错误是因为 Zend_Form_Element 中没有这样的方法。我认为您正在尝试使用视图助手以某种方式显示此表单元素,但如果是这种情况,最好使用表单装饰器。您可以使用标准装饰器,也可以创建自定义装饰器。查看文档以获取更多信息 - http://framework.zend.com/manual/en/zend.form.decorators.html

【讨论】:

  • 是的,我正在尝试使用视图助手,并且我在 ZF 的学习过程中正在这样做。我已经完成了装饰师课程,我刚刚在 akrabat.com 上找到了一个我想在我的表单中使用的示例
【解决方案2】:

要在该数据上正确使用您的视图助手,您可以像这样使用它:

在你看来 (.phtml)

//a view helper should act on a piece of data and return something
//so I assume your formDate() helper takes a date value and reformats it.
<?php echo $this->formDate($this->form->dateOfBirth) ?>

假设您使用标准将表单分配给控制器中的视图:

$this->view->form = $form;

【讨论】:

  • 是的,你已经接近了,但实际上真正的原因是必须在视图而不是 formElement 上调用 formDate 操作。我现在明白了实际上最接近的是布巴巴的评论
  • 这就是我想说的,我进行了编辑以使其更清晰。
猜你喜欢
  • 1970-01-01
  • 2011-05-12
  • 1970-01-01
  • 1970-01-01
  • 2013-03-25
  • 2011-01-22
  • 1970-01-01
  • 2010-09-27
  • 1970-01-01
相关资源
最近更新 更多