Forms 使用GET变量自动将所选内容添加到下拉菜单
我在表单中使用验证码。当用户提交对验证码的无效回答时,页面将重新加载,并使用用户数据重新填充字段。我的问题是,有没有更好(或更容易)的方法来检查选择了哪个下拉列表值 这就是我现在的工作原理: phpForms 使用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
$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。是的,听起来不错。只是做一些最后的测试,但我认为你的解决方案符合我的需要。