下拉验证

时间:2012-04-04 06:09:35

标签: php zend-framework zend-form

我在名为 town 的表单中有一个下拉选项。已经获取的值将从databasetable townId下拉。现在我想检查用户是否没有从下拉列表中选择任何选项并直接转到保存按钮,然后它应该显示“请在下拉列表中选择您的选择”。表单名为 university

我在这里尝试了这段代码:

  if(Zend_Form_Element_Submit)
        {
            if($$townid=='')
                {   alert("U Must Choose Town Name Here");

                }
            else
                {
                    $submit = new Zend_Form_Element_Submit('Save');
                    $submit->setDecorators($this->submitDecorators)
                    ->setAttrib('class','button slategray');
                }

        }

内部模型 - > university.php下拉列表中有一些操作我没有完全得到:

public function setOptions(array $options)
{
    $methods = get_class_methods($this);
    foreach ($options as $key => $value) {
        $method = 'set' . ucfirst($key);
        if (in_array($method, $methods)) {
            $this->$method($value);
        }
    }
    return $this;
}

在我编辑form-> university之前(保存代码已经退出)

$submit = new Zend_Form_Element_Submit('Save');
    $submit->setDecorators($this->submitDecorators)
        ->setAttrib('class','button slategray');
                }

提前致谢。

2 个答案:

答案 0 :(得分:0)

为了正确使用Zend Framework的表单,我建议尝试这种方法:

通过扩展Zend_Form

来创建表单
class Form_User extends Zend_Form

这会自动让您访问容器来管理此表单中的所有元素,并允许您访问isValid()方法,该方法允许您一次验证所有表单元素并populate()允许您将数据提供给表单进行编辑的方法

在新课程(Form_User)中,您可以在init()方法中定义所有表单属性和元素。

public function init()
{
    $this->setName('user')
    ->setAttrib('id', 'user');

    $username = new Zend_Form_Element_Text('username');

    $town = new Zend_Form_Element_Select('town');
    $town->addMultioptions(array(...));

    $submit = new Zend_Form_Element_Select('submit');

    $this->addElements(array($username, $town, $submit));
}

每个元素都可以使用标签,描述,一些验证器,一些过滤器等进行自定义。

如果您想强制使用元素,可以将Required属性设置为true

$town->setRequired(true);

要在提交被调整后验证您的表单,您可以像(假设您在控制器中执行此操作)一样简单地执行此操作:

$form = new Form_User();
$postData = $this->getRequest()->getPost();
$form->isValid($postData);

这将检查必填字段以及执行​​您在这些多样化元素上设置的任何验证器。

如果一切正常,它将返回true,如果有错误则返回false。如果您收到错误,请再次显示该表单,错误消息将自动显示在每个错误字段旁边。

如果要设置表单元素的选项值,初始化表单时,可以传递如下配置数组:

$form = new Form_User(array('townListOptions' => array(...));

将自动调用关联的方法setTownListOptions,并接收您为其指定的数组(或任何其他对象)。

我可以解释更多关于形式的事情,但正如@Rohan在他的评论中所说,RTM

答案 1 :(得分:-2)

在asp.net中

<asp:DropDownList ID="ddlusertype" runat="server" CssClass="dropdown"  ></asp:DropDownList>
<asp:CompareValidator ID="CompareValidator2" runat="server" ControlToValidate="ddlusertype" ErrorMessage="select" Font-Size="XX-Small" Operator="NotEqual" Type="Integer" ValueToCompare="0"></asp:CompareValidator>