繁体   English   中英

在 Slim3 中渲染 Zend 表单

[英]Rendering Zend Form in Slim3

我在 Zend Forms 2.6 ( https://packagist.org/packages/zendframework/zend-form ) 中使用 Slim3。 我正在尝试呈现表单,但出现错误:

Fatal error: Call to undefined method QuizApp\Forms\QuizForm::render() in /var/www/QuizApp/Routes/SurveyRoutes.php on line 25

我在 Slim3 中添加了我的表单作为服务:

$container['QuizForm'] = function() use ($app) {
    return new \QuizApp\Forms\QuizForm($app->SurveyServices);
};

这是我的表格:

class QuizForm extends \Zend\Form\Form
{ 
    private $survey_services;

    public function __construct(SurveyServices $survey_services, $name = null)
    {
        $this->survey_services = $survey_services;
        parent::__construct($name);
    }

    public function init()
    {
        /*
         * Set form method to POST
         */
        $this->setMethod('POST');

        /*
         * Add submit button to the form
         */   
        $this->add(array(
            'name' => 'submit',
            'type' => 'Submit',
            'attributes' => array(
                'value' => 'Get Quiz Results'
            ),
        ));
    }
}

我正在尝试在我的路线之一中呈现表单(最终我会将其传递给我的视图,但我正在测试):

$form = $this->QuizForm;

# Doesn't work
print $form;

# Doesn't work
print $form->render()

让我困惑的是文档说打印表单应该有效: http : //framework.zend.com/manual/1.12/en/zend.form.quickstart.html#zend.form.quickstart.render

我没有使用 Zend 框架。 我只使用 Form 组件。

如何渲染表单?

你看错地方了。 这是 Zend 1.12 版的文档。 您使用的是最新版本,请看这里

根据该文档资源,在渲染之前,您应该调用

$form->prepare();

此外,如果您想让渲染表单变得容易,您可能应该使用Form View Helpers

看起来您没有适当的 DI 设置,如果您不能像这样转储表单... php var_dump($this->QuizForm); 那么该对象不在this的上下文中。

我怀疑您可能没有将它注入到您调用它的类中。 但是您目前的问题是您需要将测验注入到您尝试渲染它的对象中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM