Iam患有Zend_validate,当我写一个表单并尝试添加验证器时,唯一对我有用的是如果我提交没有值的表单,它将显示错误消息,但如果我提交了好的值,它将会卡住了一段时间,然后给出了致命的错误消息,在608行的/Applications/MAMP/htdocs/MyApplicationFolderName/library/Zend/Validate/Hostname.php中超出最大执行时间30秒
请帮助我的控制器操作代码
public function createAction()
{
// action body
$roleService=new User_Service_RoleService($this->em);
$userForm=new User_Form_UserForm($roleService->listAllRoleNames());
$userForm->startForm();
$userForm->setAction('create');
$userForm->setMethod('post');
if($this->getRequest()->isPost() )
{
if($userForm->isValid($this->getRequest()->getPost()))
{
$this->userAccountService->createUser($this->getRequest()->getParams());
$this->_forward('confirm');
}
}
$this->view->form=$userForm;
}
我的表单类代码是
class User_Form_UserForm extends Zend_Form {
//put your code here
private $roles;
public function __construct($options = null) {
parent::__construct($options);
$this->roles=$options;
}
public function startForm()
{
$idForm=new Zend_Form_Element_Hidden('id');
$this->addElement($idForm);
///////////
$userEmailForm=new Zend_Form_Element_Text('email');
$userEmailForm->setRequired(TRUE);
$userEmailForm->setLabel('Email');
$emailValidator=new Zend_Validate_EmailAddress();
// $emailValidator->setOptions(array('domain' => FALSE));
$userEmailForm->addValidator($emailValidator,false);
$userEmailForm->setAttrib('size', 25);
$userEmailForm->setFilters(array(new Zend_Filter_StringToLower(),
new Zend_Filter_StringTrim())
);
$this->addElement($userEmailForm);
}
}
这是我的形式的一小部分它是如此简单,但由于Doctrine2和名称空间而使用MAMP PHP 5.3.5无法工作
请帮助我们。
注意我也尝试了其他验证器,如字符串长度,并显示相同的错误。
答案 0 :(得分:4)
“我实际上刚刚找到了这个问题的答案:
MAMP附带的PHP 5.3版本中有一个错误 iconv_strlen()导致“do {...} while(false);”在循环中 验证器无限运行。我只是将我的PHP版本改为5.2,as 无论如何它更接近生产,它的工作原理。如果你需要5.3, 但是,您必须在MAMP中升级PHP安装。一世 没试过,但强烈推荐以下链接:
http://www.davidgolding.net/cakephp/upgrading-php-in-mamp.html
希望一切都有所帮助。“
答案 1 :(得分:0)
我通过不使用mamp来解决问题,并开始使用Zendserver CE免费版http://www.zend.com/en/products/server-ce/downloads ,并完成此链接中描述的步骤http://www.witheringtree.com/2011/07/installing-zend-server-ce-on-os-x-a-guide-for-the-terminal-timid/ 我可以将zend服务器的根文档编辑为USERS / sites / 我运行Zendframework验证,它工作得很好,我喜欢mamp但我开发Zend并且zend使用iconv_strlen(),
解决这个问题的另一种方法是安装PHP,但我发现这不是一个简单的解决方案,或者你可以使用macports而我不想那样,因为我使用zendframework我需要与之相关的东西所以我用过zendServer是迄今为止最干净的解决方案。