Php 使用验证器检查zend中的allready现有数据库条目

Php 使用验证器检查zend中的allready现有数据库条目,php,zend-framework,zend-form,zend-validate,Php,Zend Framework,Zend Form,Zend Validate,我有一个zend表单,其元素$recipe\u名称如下。。 我想使用validationZend\u Validate\u DbNoRecordExists检查一个recipename是否已经存在 $recipe_name= $this->createElement('text',$i.'_recipename',array('label'=> "Extra Item Name in ".$data['language'].'', 'class'=> 'inp-f

我有一个zend表单,其元素$recipe\u名称如下。。 我想使用validationZend\u Validate\u DbNoRecordExists检查一个recipename是否已经存在

$recipe_name= $this->createElement('text',$i.'_recipename',array('label'=> "Extra      Item   Name in ".$data['language'].'', 'class'=> 'inp-form',) );
$recipe_name->setDecorators(array( 'ViewHelper',
                                    array(array('data'=>'HtmlTag'), array('tag' => 'td')),
                                    array('Label', array('tag' => 'td','style')),
                                    array(array('row'=>'HtmlTag'),array('tag'=>'tr','openOnly'=>true))));   
$recipe_name->setRequired(true);
$recipe_name->addValidator('NotEmpty',true);
$recipe_name->getValidator('NotEmpty')->setMessage("Please enter     Recipe section  name in ".$data['language']);  
我怎么能做到

是的!Zend_Validate_Db_NoRecordExists将满足您的需求。你应该像下面这样做:

    $db_lookup_validator = new Zend_Validate_Db_NoRecordExists('<your table name>', '<column name>');
    $your_field = new Zend_Form_Element_Text('<your form element name>'); // you already created an element, so you can skip this line.
    $your_field->addValidator($db_lookup_validator);

干杯,快乐编码

对于这种验证,您必须添加如下验证程序

$clause = $db->quoteInto ( '<your column Name>  ?', "<Your Value>" );
$validator = new Zend_Validate_Db_RecordExists ( array ('table' => '<Table Name>', 'field' => 'Field Name', 'exclude' => $clause ) );
if ($validator->isValid ( "<value to validate>" )) {
//..............
//.............
}
$recipe_name->addValidator(
    'Db_NoRecordExists', 
    true, 
    array(
        'table' => 'recipes',
        'field' => 'recipe_name',
        'messages' => array( "recordFound" => "Recipe Name already exist ... ! <br>") ,

    )
);
当您从isValid检查表单验证时,这将检查您的姓名