Zend新手试图配置和使用Zend_Form。
仅仅是为了记录我在运行Apache 2.something的Win XP上的Zend Framework版本:1.11.1。我正在一个大部分工作得很好的网站上工作。 (其他人开始了。我必须扩展它。)
我在表单方面遇到了麻烦,我正在尝试介绍Zend_Form,希望这会以某种方式简化问题。但是尝试使用Zend_Form会带来它自己的问题。
当我尝试实例化第一个测试表单时,我会看到死亡的白屏 - 甚至没有错误消息。
数据如下:
Dir Structure:
MYAPPNAME
....controllers
....forms
....models
....services
....views
Bootstrap.php包含:
protected function _initAutoLoading()
{
$loader = new Zend_Loader_Autoloader_Resource(array(
'namespace' => 'MYAPPNAME',
'basePath' => APPLICATION_PATH . '/modules/MYAPPNAME',
));
$loader->addResourceTypes(array(
'model' => array(
'path' => 'models',
'namespace' => 'Model'),
'form' => array(
'path' => 'forms',
'namespace' => 'Form'),
'service' => array(
'path' => 'services',
'namespace' => 'Service')));
}
这适用于名称如下的模型:
class MYAPPNAME_Model_DataRecordName extends Doctrine_Record
{
etc...
但它似乎对形式失败了......虽然请注意,这是我第一次使用Zend_Form。
我的表单在文件MYAPPNAME / forms / Formtest.php中定义:
<?php
class MYAPPNAME_Form_Formtest extends Zend_Form
{
public function init($action){
$this->setAction($action)
->setMethod('post')
->setAttrib('id', 'formtestForm');
$email = $this->addElement( 'text', 'email',
array('label', => 'EMail'));
)
$submit = $this->addElement('submit', 'Submit and Be Free!');
}// End init
} // End class def
表单显示在定义为:
的视图中<div class=""testForm">
<p style="margin-top:20px; margin-bottom:10px"">Explanatory Text</p>
<h2>This is a Form Test</h2>
<?php echo $this->formResponse; ?>
<?php echo $this->form; ?>
<hr>
<p>FORM ABOVE THIS BAR</p>
</div>
视图效果很好。
它由一个动作(在工作控制器中)管理,定义为:
public function formtestAction(){
echo "formtestAction: ENTERED";
$form = new MYAPPNAME_Form_Formtest('ThisController/formtest2');
//$form = "<p>GARBAGE DATA</p>";
if(!empty($form)){$this->view->form = $form;}
else{
$form = "<p>THE FORM VAR IS EMPTY</p>";
$this->view->form = $form;
$formResponse = "<p>INSTANTIATION FAILED</p>";
$this->view->formResponse = $formResponse;
}
}
public function formtest2Action(){
echo "formtest2Action: ENTERED";
}
如果我注释掉表单实例化和垃圾数据行,我会在视图中获得有效的输出。如果我将$ form设置为“GARBAGE DATA”,我也会获得有效的可预测输出。
然而,当我尝试实例化表单对象时,我得到的死亡白屏只包含“formtestAction:ENTERED”(来自顶部的echo语句。)
我慢慢地疯了。
我无法弄清楚这是自动加载器问题,路由问题,对象实例化问题还是什么。
我非常有责任提出任何建议。
感谢阅读。
答案 0 :(得分:1)
对于Zends,我已经多次遇到过这种情况,而且它通常是一种令人烦恼的超级逗号。在
...'basePath'=&gt; APPLICATION_PATH。 '/模块/ MYAPPNAME',));
它看起来就像那些。只是快速查看,但无论如何你都可以查看它。
HTH, 马库斯
答案 1 :(得分:0)
它确实是一个额外的逗号,只是在Form类定义中 - 阻止成功的对象实例化。
这些无声的失败非常烦人。