Zend_validate isValid () застрять fatalError Превышено максимальное время выполнения 30 секунд в /library/Zend/Validate/Hostname.php в строке 608 - PullRequest
1 голос
/ 08 августа 2011

Я страдаю от Zend_validate, когда я пишу форму и пытаюсь добавить валидаторы, единственное, что мне подходит, если я отправляю форму без значений, это будет отображать сообщение об ошибке, но если я отправлю хорошие значения, это будетзастрял на некоторое время, а затем выдал фатальную ошибку, сообщив, что максимальное время выполнения 30 секунд превышено в /Applications/MAMP/htdocs/MyApplicationFolderName/library/Zend/Validate/Hostname.php в строке 608
Помогите, пожалуйста, код действия моего контроллера:

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);



}



 }

Это небольшая часть моей формы, это очень простой, но не работающий Iam с использованием MAMP PHP 5.3.5 из-за Doctrine2 и пространств имен

Пожалуйста, любая помощь будет очень признательна.

Примечание. Я также пробовал другие средства проверки, такие как длина строки, и показала ту же ошибку.

Ответы [ 2 ]

4 голосов
/ 22 августа 2011

"На самом деле я только что нашел ответ на этот вопрос:

Версия PHP 5.3, поставляемая с MAMP, содержит ошибку в iconv_strlen (), который вызывает "do {...} while (false);" петля в валидатор для запуска бесконечно. Я просто переключил свою версию PHP на 5.2, так как в любом случае, он ближе к производству и работает. Если вам нужен 5,3, Тем не менее, вам придется обновить установку PHP в MAMP. я еще не пробовал, но настоятельно рекомендуется следующая ссылка:

http://www.davidgolding.net/cakephp/upgrading-php-in-mamp.html

Надеюсь, что все помогает. "

Источник: http://forum.mamp.info/viewtopic.php?f=2&t=12189

0 голосов
/ 15 августа 2011

Я решил проблему, не используя 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, который до сих пор является самым чистым решением.

...