簡體   English   中英

如何將表單的選定值傳輸到使用zend form的控制器

[英]How to transfer selected values of a form to controller working with zend form

我使用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在船上形成它?

我必須將$serverNamesMenu數組定義為Associative數組才能獲得語音答案。

$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”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM