/
  • zend_form

  • ارسال پاسخ   امتیاز موضوع:
    • 0 رأی - میانگین امیتازات: 0
    • 1
    • 2
    • 3
    • 4
    • 5

    حالت موضوعی | حالت خطی zend_form
    نویسنده پیام
    nasserghiasi آفلاین
    ناصر GH
    ***

    ارسال‌ها: 242
    تاریخ عضویت: ۱۳۸۸ آذر ۷
    اعتبار: 2
    تشکرها : 127
    ( 41 تشکر در 22 ارسال )
    ارسال: #1
    zend_form
    zend_form با اینکه حرفه ای عمل می کند ولی آیا کمی پیچیدگی و محدودیت به همراه ندارد؟
    1. چطور با zend form می شه database validate کرد؟
    2. آیا در قالب بندی فرم ها محدودیتی وجود نداره؟

    چطوری می تونیم خطاهای zend form (البته zend_validate ) را ترجمه کنیم؟
    منظورم ترجمه تمامی خطاها در یک فایل مثلا ini که zend_translator از آن استفاده کند و هنگام خطای validate به جای متن خطای پیشفرض از متن ترجمه شده در فایل بصورت خودکار استفاده کند؟؟
    (آخرین ویرایش در این ارسال: ۱۳۸۸ بهمن ۲۷ ۱۱:۴۳ عصر، توسط nasserghiasi.)
    ۱۳۸۸ بهمن ۲۷ ۱۱:۴۰ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    admin آفلاین
    وحید سهرابلو
    **********

    ارسال‌ها: 5,734
    تاریخ عضویت: ۱۳۸۷ آذر ۲۴
    اعتبار: 100
    تشکرها : 1362
    ( 6196 تشکر در 3438 ارسال )
    ارسال: #2
    RE: zend_form
    (۱۳۸۸ بهمن ۲۷ ۱۱:۴۰ عصر)nasserghiasi نوشته شده توسط:  zend_form با اینکه حرفه ای عمل می کند ولی آیا کمی پیچیدگی و محدودیت به همراه ندارد؟
    1. چطور با zend form می شه database validate کرد؟
    2. آیا در قالب بندی فرم ها محدودیتی وجود نداره؟

    چطوری می تونیم خطاهای zend form (البته zend_validate ) را ترجمه کنیم؟
    منظورم ترجمه تمامی خطاها در یک فایل مثلا ini که zend_translator از آن استفاده کند و هنگام خطای validate به جای متن خطای پیشفرض از متن ترجمه شده در فایل بصورت خودکار استفاده کند؟؟

    هیچ محدودیتی نداره
    در مورد اولی زند خلی validator داره و نوشتن یکی از اونا هم خیلی راحتره. البته واسه سوال شما ولیدیتورش رو زند نوشته Db_RecordExists و Db_NoRecordExists که داخیل داکیومنت هست
    در مورد دومی هم هیچ محدودیت قالبی رو نداره. برای قالب بندی می تونید از Zend_Form_Decorator استفاده کنید
    در مورد آخری هم توضیح دادم که باید از Zend_Traslator استفاده‌ کنین
    متن ها اصلش هم داخل فایلهای ولیدیتورهاش می‌تونید ببینید
    ۱۳۸۸ بهمن ۲۸ ۱۲:۴۴ صبح
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    nasserghiasi آفلاین
    ناصر GH
    ***

    ارسال‌ها: 242
    تاریخ عضویت: ۱۳۸۸ آذر ۷
    اعتبار: 2
    تشکرها : 127
    ( 41 تشکر در 22 ارسال )
    ارسال: #3
    RE: zend_form
    یه مثال برای استفاده از translator می گید؟
    در این مورد نمی تونم از translator استفاده کنم
    ضمنا من قبل از اینکه تاپیکی ایجاد کنم منوال رو می خونم و اگر به مشکلی بر خوردم که منوال کمکم نکرد و یا انگلیسیم ته کشید میام اینجا و امیدوارم اساتیدی مثل شما کمکم کنند که در 99% موارد علم شما جوابگو هست ولی در این مورد کمی گنگ بود! منظورم اینه که با مثال توضیح بدید ممنون می شم!

    ببخشید خلاصه ShyBig Grin
    (آخرین ویرایش در این ارسال: ۱۳۸۸ بهمن ۲۸ ۰۳:۱۶ صبح، توسط nasserghiasi.)
    ۱۳۸۸ بهمن ۲۸ ۰۳:۱۴ صبح
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    admin آفلاین
    وحید سهرابلو
    **********

    ارسال‌ها: 5,734
    تاریخ عضویت: ۱۳۸۷ آذر ۲۴
    اعتبار: 100
    تشکرها : 1362
    ( 6196 تشکر در 3438 ارسال )
    ارسال: #4
    RE: zend_form
    این داخل bootstrap

    کد PHP:
    public function _initTrasnlation(){
            try {
                
    $translate = new Zend_Translate('csv',
                
    dirname(__FILE__).'/lang/fa.csv',
                                                                
    'fa',
                array(
    'delimiter' => ','));
            } catch (
    Exception $e) {

                echo 
    "Trasnlation error:".$e->getMessage();
                exit();
            }
            
    $this->bootstrap("Log");
            
    $log=Zend_Registry::get("log");
            
    $translate->setOptions(array(
                                        
    'log'             => $log,
                                        
    'logUntranslated' => true)
            );
            
    Zend_Registry::set("Zend_Translate",$translate);

        } 

    این هم داخل boosstrap
    کد PHP:
    public function _initLog(){
            
    $db=Zend_Registry::get("db");
            
    $columnMapping = array('lvl' => 'priority''msg' => 'message');
            
    $writer = new Zend_Log_Writer_Db($db'log'$columnMapping);

            
    $logger = new Zend_Log($writer);
            
    Zend_Registry::set("log",$logger);
        } 

    اینم جدولت
    کد:
    CREATE TABLE IF NOT EXISTS `log` (
      `id` bigint(20) NOT NULL AUTO_INCREMENT,
      `lvl` tinyint(4) NOT NULL,
      `msg` text COLLATE utf8_persian_ci NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_persian_ci ;

    حالا‌ وقتی که از فرمت استفاده می کنی و وقتی که یه اخطاری رخ میده می تونی داخل جدولت ببینید که چی ترجمه نشده و خودت هم می تونی متن ترجمه رو داخل ترجمت بزاری مثلا توی ولیدیتور Zend_Validate_Between فایل‌ Zend_Validate_Between.php رو‌ باز کن متنهای ترجمه داخل پروپرتی $_messageTemplates وجود دارن
    ۱۳۸۸ بهمن ۲۸ ۱۱:۵۵ صبح
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط : molana nasserghiasi
    nasserghiasi آفلاین
    ناصر GH
    ***

    ارسال‌ها: 242
    تاریخ عضویت: ۱۳۸۸ آذر ۷
    اعتبار: 2
    تشکرها : 127
    ( 41 تشکر در 22 ارسال )
    ارسال: #5
    RE: zend_form
    برای مثال خطای زیر در فایل لاگ ذخیره شده:
    کد:
    2010-02-17T15:02:08+00:00 NOTICE (5): Untranslated message within 'fa': مرا به خاطر بسپار
    ولی خطاهای validator در فایل log ذخیره نمی شن!
    ۱۳۸۸ بهمن ۲۸ ۰۷:۳۴ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    admin آفلاین
    وحید سهرابلو
    **********

    ارسال‌ها: 5,734
    تاریخ عضویت: ۱۳۸۷ آذر ۲۴
    اعتبار: 100
    تشکرها : 1362
    ( 6196 تشکر در 3438 ارسال )
    ارسال: #6
    RE: zend_form
    شما باید اول باعث ایجاد خطا بشید تا اخطار در داخل لاگ بره.
    مثلا اگر خطای وجود در دیتابیس هست باید اول باعث ایجاد خطا بشید تا نرم افزار بخواد ترجمه رو انجام بده و با شکست مواجه بشه. در ضمن سعی کنی کلا از ترجمه استفاده کنید. و مثلا توی برنامه ننویسید ‌مرا‌ به خاطر بسپار بنویسیدی remember me و بعد توی ترجمه برای فارسی بزن مرا به خاطر بسپار
    ۱۳۸۸ اسفند ۱ ۱۱:۲۵ صبح
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    nasserghiasi آفلاین
    ناصر GH
    ***

    ارسال‌ها: 242
    تاریخ عضویت: ۱۳۸۸ آذر ۷
    اعتبار: 2
    تشکرها : 127
    ( 41 تشکر در 22 ارسال )
    ارسال: #7
    RE: zend_form
    یه سوال دیگه اگر بخواهیم وسط فرم یه توضیحی بنویسیم، چیکار باید بکنیم؟
    ضمنا اگر از زش zend captcha تو فرم استفاده کنیم و مقدار decorators را برابر با کد زیر قرار دهیم خروجی captcha درست در نمیاد!!
    کد PHP:
    array(
            
    'ViewHelper',
            array(
    'Errors', array('class' => 'err-msg clearfix')),
            array(array(
    'data' => 'HtmlTag'), array('tag' => 'span''class' => 'element')),
            array(
    'Label', array('tag' => 'span')),
            array(array(
    'row' => 'HtmlTag'), array('tag' => 'div','class'=>'form-row clearfix')),
        ); 
    (آخرین ویرایش در این ارسال: ۱۳۸۸ اسفند ۱۹ ۰۲:۱۷ صبح، توسط nasserghiasi.)
    ۱۳۸۸ اسفند ۱۹ ۰۲:۱۵ صبح
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    admin آفلاین
    وحید سهرابلو
    **********

    ارسال‌ها: 5,734
    تاریخ عضویت: ۱۳۸۷ آذر ۲۴
    اعتبار: 100
    تشکرها : 1362
    ( 6196 تشکر در 3438 ارسال )
    ارسال: #8
    RE: zend_form
    چه‌ جوری ‌ازش‌ استفاده می کنی
    یه نمونه کد بزار
    (آخرین ویرایش در این ارسال: ۱۳۸۸ اسفند ۱۹ ۱۲:۳۰ عصر، توسط admin.)
    ۱۳۸۸ اسفند ۱۹ ۱۲:۲۷ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    nasserghiasi آفلاین
    ناصر GH
    ***

    ارسال‌ها: 242
    تاریخ عضویت: ۱۳۸۸ آذر ۷
    اعتبار: 2
    تشکرها : 127
    ( 41 تشکر در 22 ارسال )
    ارسال: #9
    RE: zend_form
    یک فرم لاگین که نوشتم:
    کد PHP:
    class Default_Form_login extends Zend_Form
    {
        public 
    $translate;
        public 
    $config;
        public 
    $elementDecorators = array(
            
    'ViewHelper',
            array(
    'Errors', array('class' => 'err-msg clearfix')),
            array(array(
    'data' => 'HtmlTag'), array('tag' => 'span''class' => 'element')),
            array(
    'Label', array('tag' => 'span')),
            array(array(
    'row' => 'HtmlTag'), array('tag' => 'div','class'=>'form-row clearfix')),
        );
        
        public 
    $buttonDecorators = array(
            
    'ViewHelper',
            array(array(
    'data' => 'HtmlTag'), array('tag' => 'span''class' => 'element')),
            array(array(
    'label' => 'HtmlTag'), array('tag' => 'span''placement' => 'prepend')),
            array(array(
    'row' => 'HtmlTag'), array('tag' => 'div''class' => 'controls clearfix')),
        );
        
        public 
    $captchaDecorators = array(
            
    'ViewHelper',
            array(
    'Errors', array('class' => 'err-msg clearfix')),
            array(
    'Label', array('tag' => 'span')),
        );   
        
        public function 
    init()
        {
            
    $this->config Zend_Registry::get('config');
            
    $this->translate Zend_Registry::get('translate');
            
    $this->setDefaultTranslator($this->translate);
            
    $this->setAction('')->setMethod('post');
            
    $this->setName('loginForm');
            
    $this->setAttrib('class''form');
            
    $this->addElement('text','username', array(
                    
    'required'   => true,
                    
    'class'      => 'english',
                    
    'decorators' => $this->elementDecorators,
                
                    
    'label'      => $this->translate->_('login_username').':',
                    
    'value'      => $this->getValue('username'),
                    
    'validators' => array(
                        array(
    'validator' => 'StringLength''options' => array(040)),
                        
    'Alnum',
                        
                     )
                    )
                );

            
    $this->addElement('password','password', array(
                    
    'required'   => true,
                    
    'class'      => 'english',
                    
    'decorators' => $this->elementDecorators,
            
                    
    'label'      => $this->translate->_('login_password').':',
                    
    'validators' => array(
                        array(
    'validator' => 'StringLength''options' => array(040))
                    )
                ));

            
    $this->addElement('checkbox','remember', array(
                    
    'required'   => false,
                    
    'class'      => '',
                    
    'decorators' => $this->elementDecorators,
                    
    'value'         => 1,
                    
    'label'      => $this->translate->_('login_remember_me'),
                ));
                
                
         if(isset(
    $_COOKIE['site_login_captcha_status']))
         {
           if(
    $_COOKIE['site_login_captcha_status'])
           {
            
    $this->addElement('captcha''captcha', array(
                
    'label'      => 'captcha:',
                
    'required'   => true,
                
    //'decorators' => $this->captchaDecorators,
                
    'captcha'    => array('captcha' => 'Image'
                                      
    'wordLen' => 4
                                      
    'timeout' => 300
                                      
    'Font'    => $this->config->captcha->font->path,
                                      
    'ImgDir'  => $this->config->captcha->font->ImgDir,
                                      
    'ImgUrl'  => $this->config->captcha->font->ImgUrl,
                                      
    'Width'   => $this->config->captcha->Width,
                                      
    'Height'  => $this->config->captcha->Height,
            
            
            )
            ));
           }
         }
         
                 
            
    $this->addElement('submit''submit'
            array(
    'label' => $this->translate->_('login_submit') ,
            
    'class' => 'btn' ,
            
    'decorators' => $this->buttonDecorators,
            
    'ignore' => true));
            
           
            
    $this->setDecorators(array(
                
    'FormElements',
                array(
    'HtmlTag', array('tag' => 'div''class' => 'box')),
                
    'Form',
            ));        
        }

    ۱۳۸۸ اسفند ۱۹ ۱۱:۳۹ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    « قدیمی تر | تازه‌ تر »

    ارسال پاسخ
    پرش به انجمن:


    کاربرانِ درحال بازدید از این موضوع: 1 مهمان
    IranPHP.org | تماس با ما | بازگشت به بالا | بازگشت به محتوا | بایگانی | پیوند سایتی RSS