Forms 使用GET变量自动将所选内容添加到下拉菜单

Forms 使用GET变量自动将所选内容添加到下拉菜单,forms,drop-down-menu,symfony1,get,symfony-1.4,Forms,Drop Down Menu,Symfony1,Get,Symfony 1.4,我在表单中使用验证码。当用户提交对验证码的无效回答时,页面将重新加载,并使用用户数据重新填充字段。我的问题是,有没有更好(或更容易)的方法来检查选择了哪个下拉列表值 这就是我现在的工作原理: php <?php $state = $sf_params->get('state'); ?> html <span>State </span> <select size="1" name="state">

我在表单中使用验证码。当用户提交对验证码的无效回答时,页面将重新加载,并使用用户数据重新填充字段。我的问题是,有没有更好(或更容易)的方法来检查选择了哪个下拉列表值

这就是我现在的工作原理:

php

<?php
    $state = $sf_params->get('state'); 
?>

html

<span>State </span>
    <select size="1" name="state">
            <option value="" selected="selected"></option>
            <option value="AL" <?php if ($state == "AL") { echo "selected = 'selected'"; } ?>>Alabama</option>
            <option value="AK" <?php if ($state == "AK") { echo "selected = 'selected'"; } ?>>Alaska</option>
            <option value="AZ" <?php if ($state == "AZ") { echo "selected = 'selected'"; } ?>>Arizona</option>
            <option value="AR" <?php if ($state == "AR") { echo "selected = 'selected'"; } ?>>Arkansas</option>
状态

嗯,自己创建表单并不是一个好的做法。通常,您应该使用sfForm类中的小部件等

但是,如果你真的想构建这种东西,你应该从sf1.0中带回一个好的助手来帮助你构建表单标签。在您的情况下,函数和可能很有用:

  • 选择的选项

基于可选的
$options
数组变量返回一组格式化的
标记

  • 选择标签

    返回一个
    标记,可以选择由
    标记组成

  • 选择的选项作为第二个参数,即所需的选定值

    因此,创建一个名为
    lib/helper/FormHelper.php的文件,并将这两个函数放入其中。不要忘记在视图中加载辅助对象:

    <?php use_helper('Form') ?>
    
    
    

    使用
    options\u-for\u-select
    select\u-tag
    来构建您的select。

    好吧,单独构建表单并不是一个好的做法。通常,您应该使用sfForm类中的小部件等

    但是,如果你真的想构建这种东西,你应该从sf1.0中带回一个好的助手来帮助你构建表单标签。在您的情况下,函数和可能很有用:

    • 选择的选项

    基于可选的
    $options
    数组变量返回一组格式化的
    标记

  • 选择标签

    返回一个
    标记,可以选择由
    标记组成

  • 选择的选项作为第二个参数,即所需的选定值

    因此,创建一个名为
    lib/helper/FormHelper.php的文件,并将这两个函数放入其中。不要忘记在视图中加载辅助对象:

    <?php use_helper('Form') ?>
    
    
    

    使用
    options\u for_select
    &
    select\u tag
    构建您的select。

    首先将select的值移动到控制器中的一个数组,如

    $states = array('AL' => 'Alabama', ... );
    
    然后您可以使用上面提到的帮助器j0k或步行:
    通过在控制器中分配变量

    $this->states = $states;
    
    在模板中:

    <?php foreach ($states as $key => $value): ?>
    <option value="<?php echo $key ?>" <?php if ($state == $value) { echo "selected = 'selected'"; } ?>><?php echo $value ?></option>
    <?php endforeach; ?>
    
    
    
    首先将select的值移动到控制器中的数组,如

    $states = array('AL' => 'Alabama', ... );
    
    然后您可以使用上面提到的帮助器j0k或步行:
    通过在控制器中分配变量

    $this->states = $states;
    
    在模板中:

    <?php foreach ($states as $key => $value): ?>
    <option value="<?php echo $key ?>" <?php if ($state == $value) { echo "selected = 'selected'"; } ?>><?php echo $value ?></option>
    <?php endforeach; ?>
    
    
    
    此表单是从序列化数据生成的自定义表单。这就是为什么它是以传统的html方式构建的。每个表单都设置为一个部分,并根据路由变量拉入模板。这已经在开发中,所以没有回头路:)此表单是从序列化数据生成的自定义表单。这就是为什么它是以传统的html方式构建的。每个表单都设置为一个部分,并根据路由变量拉入模板。这已经在开发中,所以没有回头路:)在这个场景中,我完全在视图中工作。此表单是正在拉入模板的分部。可以,但可以将变量传递给分部:。因此,将状态存储在代码中的某个位置,并将其传递给partial,然后您至少可以使用foreach。是的,听起来不错。只是做一些最后的测试,但我认为您的解决方案符合我的需要。在这个场景中,我完全按照视图工作。此表单是正在拉入模板的分部。可以,但可以将变量传递给分部:。因此,将状态存储在代码中的某个位置,并将其传递给partial,然后您至少可以使用foreach。是的,听起来不错。只是做一些最后的测试,但我认为你的解决方案符合我的需要。