0

でユーザー登録用のサインアップページとログインページという名前のページを作成しましAgiletoolkitmysqlAgiletoolkit登録中にサインアップページのフレームワークに電子メールが存在するかどうかを確認するにはどうすればよいですか? 私はこのコードで試しました

class page_signup extends Page {
    function init(){
        parent::init();

        if($this->api->auth->isLoggedIn())$this->api->redirect('video');

        //$user_role_list=array(' ',1=>'Admin',2=>'Moder',3=>'User');
        $user_role_list=array(1=>'Admin',2=>'Moder',3=>'User');

        $model=$this->add('Model_Customer');
        $model->addField('password')->type('password')->mandatory(true);

        $form = $this->add('MVCForm');
        $form->setModel($model);
        //$form->getElement('email')->validateNotNull()->validateField('filter_var($this->get(), FILTER_VALIDATE_EMAIL)');
        $form->getElement('email')->validateNotNull()->validateField('filter_var($this->get(), FILTER_VALIDATE_EMAIL)');

        $form->addField('password','confirm_password');
        //$form->addField('dropdown','user role')->setValueList($user_role_list)->validateNotNull('Please Select User Role');   
        //$form->addField('dropdown','user role')->setValueList($user_role_list)->validateNotNull();
        //$form->addField('dropdown','user role')->setValueList($user_role_list)->validateField('$this->get()==" "','Please select any one');

        $form->addField('dropdown','user role')->setValueList($user_role_list);
        $form->addSubmit();

       $form->onSubmit(function($form){
            //try{
                /*  */
                $exist = $this->api->db->dsql()
                   ->table('customer')
                   ->field('count(*)') // I guess it can be written as ->count() too
                   ->where('email',$model['email'])
                   ->do_getOne();

                if($exist[0]) {
                    throw $this->exception('Email year for this grant already exists')
                               ->setField('email');
                }

                /*  */              
                if($form->get('password') != $form->get('confirm_password'))
                    throw $form->exception('Passwords do not match')->setField('confirm_password');


                $form->set('password',
                    $form->api->auth->encryptPassword($form->get('password'),$form->get('email')));

                $form->update();

                //$form->js()->hide('slow')->univ()->successMessage('Registered successfully')->execute();
                $location = $_SERVER['PHP_SELF'];
                $form->js()->hide('slow')->univ()->location($location)->successMessage('Registered successfully')->execute();
                //$form->js()->univ()->dialogOK('Success','Registration is successful',$form->js()->_enclose()->univ()->location('/'))->execute();

            /*}catch(Exception $e){
                $form->js()->univ()->alert('Failed to add record')->execute();
            }*/
        });
    }
}

正常に動作していません。別のユーザーが同じメールをメール テキスト ボックスに入力すると、myemail(dynamic) is already existing のようにエラー/アラートが表示されます。

別の質問は、ドロップダウン メニュー (ユーザー ロールなど) を検証する方法と、データベース テーブル (顧客テーブル) にユーザー ロール フィールド値を挿入する方法です。

4

1 に答える 1

0

電子メールが null または null でない場合、コード getElement('email')->validateNotNull()->validateField('filter_var($this->get(), FILTER_VALIDATE_EMAIL)'); を記述しました。?> そして、このコードでもテストしました api->db->dsql() ->table('customer') ->field('email') // ->count() のようにも書けると思います->where('email',$form->get('email')) ->do_getOne();

             /* From Database Table*/

            if(trim($form->get('email'))==trim($exist)){
                throw $form->exception('This email is already exist')->setField('email');
            }?> for the email is exit or not. It works fine in localhost, xampp but in server it shows an error with $this. And another thing is that I have write    <?php $user_role_list=array(''=>'Please Select',1=>'Admin',2=>'Moder',3=>'User'); $this->addField('userrole')->setValueList($user_role_list);?> in module folder page  And for userrole, I have to validate with the code like    <?php $form->getElement('userrole')->validateNotNull();?> in page folder page. 
于 2013-11-26T10:22:39.873 に答える