如何将表单的选定值传输到使用zend form的控制器

时间:2019-01-23 16:46:18

标签: php zend-framework

我使用zend表单获取一些用户输入(参数)。用户可以从以下选项中选择数字{1、4、12、15)。 $this->getRequest();返回我的发帖请求。但是我只得到所选值的“ id”。例如,用户选择12个$this->getRequest(); postParams-> ArrayObject *存储编号='2'

我阅读了文档找不到内容。

表单类


class ServerBoardForm extends Form
{

    public function __construct($name = null)
    {


        $this->add([
            'type' => Element\Radio::class,
            'name' => 'server',
            'options' => [
                'label' => 'Server',
            ],
        ]);

        $this->add([
            'type' => Element\Select::class,
            'name' => 'timeframe',
            'options' => [
                'label' => 'Zeitspanne in Stunden',
                'value_options' => [
                    '0' => '1',
                    '1' => '12',
                    '2' => '24',
                    '3' => '48',
                ],
            ],
        ]);

        $this->add([
            'name' => 'submit',
            'type' => 'submit',
            'attributes' => [
                'value' => 'Go',
                'id' => 'submitbutton',
            ],
        ]);
    }


}

html


<?php

$this->form->setAttribute('action', $this->url('test'));
$this->form->setAttribute('method', 'post');
$this->form->prepare();

echo $this->form()->openTag($this->form);
echo $this->formSelect($this->form->get('timeframe'));
echo $this->formSubmit($this->form->get('submit'));
echo $this->form()->closeTag();
?>

控制器

$form = $this->repository->buildMenu();

        $formRequest = $this->getRequest();

存储库


    public function buildMenu(){
        $form = new ServerBoardForm();
        $form->get('submit')->setValue('Show');
        return $form;
    }


我希望输出为12,但实际输出为3。

建议的答案对我没有帮助,因为我的表单元素没有方法getElement也没有这样的列表。我仅有的列表绑定到'value_options' => $serverNamesMenu,。用户可以从此列表中选择服务(字符串)。该列表显示在视图中。该列表在视图中的显示方式起作用。

正如我在这里已经指出的,这就是我如何定义选择元素的方法。

$form->add([
            'type' => Element\Radio::class,
            'name' => 'server',
            'options' => [
                'label' => 'Server',
                'value_options' => $serverNamesMenu,
            ],
        ]);

由于没有方法getValue_Options,如何读取用户选择的内容,并将其存储在哪里?

我使用

在控制器中获取数据
$data = $this->params()->fromPost();
        $form->setData($data);

        $hallo = $form->get('server');

我可以做到

$hallo = $form->get('server')->getValue();

并获得“ 1”。我想要一个返回用户已看到并选择的字符串的方法。我认为我需要方法getValueOptionsgetOptions->getValueOptions。我需要自己构建它还是Zend在船上形成它?

1 个答案:

答案 0 :(得分:0)

我必须将$serverNamesMenu数组定义为关联数组才能获得口头回答。

$form->add([
            'type' => Element\Radio::class,
            'name' => 'server',
            'options' => [
                'label' => 'Server',
                'value_options' => $serverNamesMenu,
            ],
        ]);

由于我的$serverNamesMenu的结构为0 =>'server1',1 =>'server2',因此它仅返回“ 1”。

$serverNamesMenu应该看起来像'server1'=>'server1', 'server2'=>'server2'。

现在$hallo = $form->get('server')->getValue();返回我“ server2”