zf2选择框发送邮件中的代码和值

时间:2014-06-01 03:48:39

标签: php forms zend-framework2

我正在使用ZF2选择框

我已经从控制器设置了选项,一切正常。我选择该选项并按下选择,代码将转到帖子值中的操作。

我想多一点;以及我想传递价值的代码。

例如: 我有以下选择选项

选择框用于选择用户的性别;相应的操作是" AddUserProfileForm"确认所谓的行动是" AddUserProfile"

<select name="user_gender_code">
<option value="M">Male</option>
<option value="F">Female</option>
</select>

我想传递代码&#34; M&#34;和相应的价值&#34;男性&#34;对面的帖子 这将确保在后续表单中我将代码写入数据库并在屏幕上显示值而不执行数据库读取。

我能想到的唯一选择是构建如下代码

<select name="user_gender_code">
<option value="M~Male">Male</option>
<option value="F~Female">Female</option>
</select>

这将确保&#34; M~男性&#34;是通过一个帖子发送的,然后我分割了价值&#34; M&#34; &安培; &#34;男性&#34;分开。

我没有在表单中设置valueOptions;在它们为空的形式中,我使用控制器中的函数来读取数据库并设置valueOptions;

有人有更好的选择;我可以创建一个隐藏的表单元素&#34; user_gender_name&#34;如果这是填充在帖子之前选择的选项的值,它将使我的工作更容易和更干净

有谁知道怎么做? 提前感谢您的时间

AddUserProfileForm - 代码

    $this->viewModel = $this->getViewModel( );
    $EnvironmentTable = $this->getServiceLocator ( )->get( 'UserTable' );
    $post = $this->request->getPost( );
    //Get Route Variable Section
    //  ****Get Any Route Variable you need over here


    //End Get Route Variable Section

    $form = $this->getServiceLocator ( )->get( 'AddUserProfileForm' );
    //Get Table Records Section
    //  ****Get Any Table Records you need over here


    //End Get Table Records Section

    $form->get( 'user_gender' )->setValueOptions( $this->getLookupGenderList( ) );
    $this->viewModel->AddUserProfileForm = $form;
    //Set View Variables Section
    //  ****Define other view variables over here


    //End Set View Variables Section

    return $this->viewModel;

AddUserProfile - 代码

$this->viewModel = $this->getViewModel( );
$post = $this->request->getPost( );
//Get Route Variable Section
//  ****Get Any Route Variable you need over here

//End Get Route Variable Section

$fromForm = $this->getServiceLocator ( )->get( 'AddUserProfileForm' );
//Bind Form Section
//  ****Bind the form with the Table Record over here

//End Bind Form Section

2 个答案:

答案 0 :(得分:1)

除非我完全误解了这个问题,否则你的select元素已经包含了一个键/值对数组的选项,你只需要获取所选的值,然后在options数组中使用它作为键。将为您提供所选选项的名称......

if ($form->isValid()) {
    // get the element
    $selectElement = $form->get('selectElement');
    // get the selected value
    $selectValue   = $selectElement->getValue();  // 'M'
    // get the select options
    $selectOptions = $selectElement->getValueOptions(); // array('M' => 'Male, 'F' => 'Female');
    // get option name using selected value as key in options array 
    $genderName = $selectOptions[$selectValue];  // 'Male'
}

答案 1 :(得分:0)

我最简单的解决方案是连接代码和&amp;代码中的值;邮件完成后,会发送连接的代码。我们可以拆分分隔符并获取两个值。