/
  • متد output()

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

    حالت موضوعی | حالت خطی متد output()
    نویسنده پیام
    pary_daryayi آفلاین
    Mermaid
    ****

    ارسال‌ها: 615
    تاریخ عضویت: ۱۳۹۱ خرداد ۲۸
    اعتبار: 19
    تشکرها : 724
    ( 204 تشکر در 116 ارسال )
    ارسال: #1
    متد output()
    سلام دوستان.
    یک سوال کوچیک :
    در قسمت User Guide از CI گفته شده شما میتونید از متد _output() برای نمایش خروجی و امنیت بیشتر استفاده کنید . یه مثال هم زده که استفاده و کاربردش رو متوجه نشدم .
    یعنی به جای اینکه خروجی رو مستقیما echo کنیم ، میشه متد output رو فراخوانی کرد ؟ با تعداد پارامتر های متغیر ؟
    میشه یه مثال کوچیک بزنید .
    ممنونم
    __________________________________________________________________________
    آرام باش ؛ توكل كن ؛ تفكر كن و سپس آستينها را بالا بزن , آنگاه دستان خداوند را خواهي ديد كه زودتر از تو دست به كار شده است.امام علي عليه السلام.
    ۱۳۹۱ مهر ۲۵ ۰۶:۲۱ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    Reza آفلاین
    رضا شیخله
    *****

    ارسال‌ها: 3,038
    تاریخ عضویت: ۱۳۹۰ آبان ۱۶
    اعتبار: 133
    تشکرها : 2712
    ( 2703 تشکر در 1685 ارسال )
    ارسال: #2
    RE: متد output()
    شما که توی خروجی فقط متن نداری ، حتماً یه سری استایل و غیره رو هم هر باره باید فراخوانی کنی .
    واسه همین یه متد میسازی که دو تا آرگومان میگیره ، یکیش اسم فایلی که قراره برای ویو استفاده بشه دومش اطلاعاتی که براش ست میشه .
    __________________________________________________________________________
    -- - RezaWorkShop.ir - blog.RezaOnline.net
    ۱۳۹۱ مهر ۲۵ ۰۶:۴۸ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط : pary_daryayi
    pary_daryayi آفلاین
    Mermaid
    ****

    ارسال‌ها: 615
    تاریخ عضویت: ۱۳۹۱ خرداد ۲۸
    اعتبار: 19
    تشکرها : 724
    ( 204 تشکر در 116 ارسال )
    ارسال: #3
    RE: متد output()
    ممنون. توضیحی که شما دادید معادل این هستش ؟ درسته ؟
    کد:
    function index()
    {
    $data['title']='my titile';
    $this->load->view('tem/panel',$data);
    }
    ولی من منظورم این نیست.
    تو این لینک link قسمت Processing Output رو متوجه نشدم.
    یعنی شما میگید توضیحی که این قسمت داده ، معادل همین کدی هست که نوشتم ؟
    __________________________________________________________________________
    آرام باش ؛ توكل كن ؛ تفكر كن و سپس آستينها را بالا بزن , آنگاه دستان خداوند را خواهي ديد كه زودتر از تو دست به كار شده است.امام علي عليه السلام.
    (آخرین ویرایش در این ارسال: ۱۳۹۱ مهر ۲۵ ۰۷:۱۲ عصر، توسط pary_daryayi.)
    ۱۳۹۱ مهر ۲۵ ۰۷:۰۸ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    Reza آفلاین
    رضا شیخله
    *****

    ارسال‌ها: 3,038
    تاریخ عضویت: ۱۳۹۰ آبان ۱۶
    اعتبار: 133
    تشکرها : 2712
    ( 2703 تشکر در 1685 ارسال )
    ارسال: #4
    RE: متد output()
    ببینید ما در برنامه نویسی شی گرایی ، به هر متد وظیفه ای میدیم .
    که اصطلاحاً بهشون میگیم اکشن .
    توی کنترلرتون باید یک متد رو وظیفه نمایش خروجی بذارید تا بتونید به راحتی با تغییر یک متد ، تغییرات لازم رو اعمال کنید .
    اومدیم بعد از دو ماه خواستید خروجی رو کش کنید ، اگه تمام درخواست های خروجی توی یک متد باشه فقط کافیه همون متد رو تغییر بدید .
    بیایید کمی بیشتر بریم ، کل معماری MVC برای منظم تر کردن برنامه و توسعه و خطایابی راحتتر هست.
    مثلاً توی همین CI شما توی کنترلر به دیتابیس دسترسی دارید ، یعنی حتی بدون استفاده از یک دونه مدل هم میتونید تموم برنامه تون رو بنویسید اما بهتره که از مدل استفاده کنید .
    الانم این متد _output هم همینه .
    البته یه چیز بگم ، اگه متد رو _output بذارید همزمان با فراخوانی متد ، کلاس output هم فراخونده میشه که برای تنظیمات هدر و ... استفاده میشه . (برای کنترلر های کپچا خوبه .)
    این یه قسمتی از اسکریپت دانلود شاپ هست .
    متد _out رو یه نگا بندازید .

    کد PHP:
    <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

    class 
    Site extends CI_Controller {
        
        var 
    $site_title NULL;
        
        function 
    __construct()
        {
            
    parent::__construct();
            
    $this->load->model('Sitemodel','site');
            
    $this->load->model('Appmodel','app');
            
    $this->output->enable_profiler(1);
        }


        public function 
    index()
        {
            
    $this->home();
        }
        
        
    // ---- product ---\\

        /* index , home */
        
    function home()
        {
            
    $data['pagenumber'] = $this->site->pagenumber('ds_product',"`status`='publish'",'','post');
            
    $data['items'] = $this->site->get_product_home();
            
    //$this->site_title= '';
            
    $this->_out('home',$data);
        }
        
        
    /* post/product */
        
    function post($uri='' $NULL =NULL)
        {
            
    $NULL === NULL or show_404();
            
            
    $uri urldecode($uri);
            
    $uri_fix url_fix($uri);
            
    $uri_fix == $uri or show_404();
            
            
    $data['items'] = $this->site->get_product_single($uri);
                foreach(
    $data['items'] as $item)
                {
                    
    $this->site_title $item->title;
                    break;
                }
            
    $this->_out('single',$data);
        }
        
        
    /* archive */
        
    function archive($y=0,$m=0)
        {
            
    $y = (int) big_intval($y);
            
    $m = (int) big_intval($m);
            
            if(
    $y<1350 or $y>1500 or $m<or $m>12)
                
    show_404();
                
            
    $archive "{$y}-{$m}";
            
    $data['pagenumber'] = $this->site->pagenumber('ds_product',"`status`='publish' and `archive`='{$archive}'","archive/{$y}/{$m}/",'post');
            
    $data['items'] = $this->site->get_product_archive($archive);
            
            
    $month = array('','فروردین','اردیبهشت','خرداد','تیر','مرداد','شهریور','مهر','آبان','آذر','دی','بهمن','اسفند');
            
    $this->site_title $month[$m].' '.$y;
            
            
    $this->_out('archive',$data);
        }

        
    // ------- extra --- \\
        
    function contact()
        {
            
    $data['msg'] = '';
            if( ! empty(
    $_POST))
                
    $data['msg'] = $this->site->add_contact();
            
    $this->site_title 'تماس با ما';
            
    $this->_out('contact',$data);
        }
        
        function 
    tribune()
        {
            
    $this->site_title 'تریبون';
            
    $data['msg'] = '';
            if( ! empty(
    $_POST))
                
    $data['msg'] = $this->site->add_tribune();
            
            
    $data['pagenumber'] = $this->site->pagenumber('ds_tribune',"`status`='publish'",'tribune','post');
            
    $data['items'] = $this->site->get_tribune();
            
            
    $this->_out('tribune',$data);
            
        }
    // ============== buy =================\\
        
    function buy($id 0)
        {
            if(isset(
    $_POST['action']) and $_POST['action'] === 'buy')
                
    $data['msg'] = $this->site->buy($id);
                
            
    //load module
            
    $this->load->model('Paymentmodule','pay');
            
    $data['getway'] = $this->pay->get_getway();
            
    $data['product'] = $this->site->buy_it($id);
            
    $this->site_title $data['product']['title'];
            
    $this->_out('buy',$data);
        }
        
        
    /* callback*/
        
    function callback($getway NULL $rand 'rand' $time_stamp 'time',$buy_id 'buy',$null=NULL)
        {
            
    $null === NULL or show_404();
            if(
    is_null($getway) or !_is_numeric($rand) or !_is_numeric($time_stamp) or !_is_numeric($buy_id))
                
    show_404();
                
            
    $data $this->site->callback($getway,$rand,$time_stamp,$buy_id);
            
    $this->_out('callback',$data);
        }
        
    //=== OUT ===\\
        
    function _out($name 'home' $data= array('not_things'=>'empty'))
        {
            
    //set title
            
    $site_title $this->main->get_option('site_title');
            if( ! empty(
    $this->site_title))
                
    $this->app->set_var('site_title' $site_title.' » '.$this->site_title);
            else
                
    $this->app->set_var('site_title' ,$site_title);
                    
            
    $data['data_pattern'] = $this->main->get_option('date_post_pattern');
            
    $data_app['app'] = $this->app ;
            
            
    $this->load->view('site/header',$data_app);
            
    $this->load->view("site/$name",$data);
            
    $this->load->view('site/sidebar');
            
    $this->load->view('site/footer');

        }

    __________________________________________________________________________
    -- - RezaWorkShop.ir - blog.RezaOnline.net
    ۱۳۹۱ مهر ۲۵ ۰۷:۳۰ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط : pary_daryayi masoud1990
    pary_daryayi آفلاین
    Mermaid
    ****

    ارسال‌ها: 615
    تاریخ عضویت: ۱۳۹۱ خرداد ۲۸
    اعتبار: 19
    تشکرها : 724
    ( 204 تشکر در 116 ارسال )
    ارسال: #5
    RE: متد output()
    خیلی ممنونم...
    یه سوال کلی دیگه :
    من تازه CI رو شروع کردم و فقط یه درک کلی ازش دارم ، میخوام بدونم باید به تمام فایل ها و کلاس ها مسلط بود ( مثلا فایل های پوشه ی core ) یا به همین User Guide و نحوه ی کار با فریم ورک اکتفا کنم ؟ دونستن تمام اونها لازمه ؟
    __________________________________________________________________________
    آرام باش ؛ توكل كن ؛ تفكر كن و سپس آستينها را بالا بزن , آنگاه دستان خداوند را خواهي ديد كه زودتر از تو دست به كار شده است.امام علي عليه السلام.
    ۱۳۹۱ مهر ۲۵ ۱۰:۳۳ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    Reza آفلاین
    رضا شیخله
    *****

    ارسال‌ها: 3,038
    تاریخ عضویت: ۱۳۹۰ آبان ۱۶
    اعتبار: 133
    تشکرها : 2712
    ( 2703 تشکر در 1685 ارسال )
    ارسال: #6
    RE: متد output()
    خیر لازم نیست .
    شما فقط بخش user guide رو بخونید تموم اونچه که لازم دارید رو داره .
    حقیقتش CI به همین داکیومنتش معروفهBlush

    در مورد کدهای هسته ، هر وقت خواستید تسلط کلی روی پیاده سازی کلی فریم ورک داشته باشین بخونینش .
    البته خوندن بعضی کلاسهاش خالی از لطف نیست .Wink
    __________________________________________________________________________
    -- - RezaWorkShop.ir - blog.RezaOnline.net
    ۱۳۹۱ مهر ۲۶ ۱۲:۵۸ صبح
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط : pary_daryayi
    pary_daryayi آفلاین
    Mermaid
    ****

    ارسال‌ها: 615
    تاریخ عضویت: ۱۳۹۱ خرداد ۲۸
    اعتبار: 19
    تشکرها : 724
    ( 204 تشکر در 116 ارسال )
    ارسال: #7
    RE: متد output()
    آقا رضا این مثال اسکریپت دانلود شاپ خیلی خوب بود . بازم تشکر .
    الان من قسمت ظاهری سایت رو درست کردم و یه منو گذاشتم که روی هر کدوم که کلیک میشه center سایتم محتواش عوض میشه . فعلا از پایگاه چیزی خونده نمیشه و فرض کنیم مطالب ساده ی از پیش آماده قراره نمایش داده بشه.
    این کد رو ببینید بی زحمت :
    کد:
    public function home()
        {
            $data['page']='home';
            $data['home']='home';
            $this->_out('tem','panel',$data);
            
        }
        
        public function skills()
        {
            $data['page']='skills';
            $data['skills']='skills';
            $this->_out('tem','panel',$data);
            
        }
            
        function _out($folder ='tem', $name = 'panel' ,$data= array('not_things'=>'empty'))
        {
                    
                    $this->load->view('tem/baner');
                    $this->load->view('tem/header');
                    $this->load->view("$folder/$name",$data);
                    
            
        }

    الان روی منوی home که کلیک میشه مثلا کلمه ی home و روی skills که کلیک میشه کلمه ی skills نمایش داده میشه . تا اینجا درسته.
    فقط یه سوال ؟ الان فرض کنیم صفحه ی اول سایتمون به جای کلمه ی home ، یه مطلب طولانی داریم با یه سری عکس و استایل خودش . آیا این درسته که با $data به این شکل بفرستیم. یا یه صفحه ی دیگه تعریف کنم و فراخوانی کنم ؟ یعنی میخوام یه صفحه ی دیگه رو از view‌بخونم و در center نشون بدم.
    میشه راهنمایی کنید.
    __________________________________________________________________________
    آرام باش ؛ توكل كن ؛ تفكر كن و سپس آستينها را بالا بزن , آنگاه دستان خداوند را خواهي ديد كه زودتر از تو دست به كار شده است.امام علي عليه السلام.
    (آخرین ویرایش در این ارسال: ۱۳۹۱ آبان ۱ ۰۶:۱۰ عصر، توسط pary_daryayi.)
    ۱۳۹۱ آبان ۱ ۰۶:۰۹ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط : Reza
    Reza آفلاین
    رضا شیخله
    *****

    ارسال‌ها: 3,038
    تاریخ عضویت: ۱۳۹۰ آبان ۱۶
    اعتبار: 133
    تشکرها : 2712
    ( 2703 تشکر در 1685 ارسال )
    ارسال: #8
    RE: متد output()
    نقل قول: فقط یه سوال ؟ الان فرض کنیم صفحه ی اول سایتمون به جای کلمه ی home ، یه مطلب طولانی داریم با یه سری عکس و استایل خودش . آیا این درسته که با $data به این شکل بفرستیم. یا یه صفحه ی دیگه تعریف کنم و فراخوانی کنم ؟ یعنی میخوام یه صفحه ی دیگه رو از view‌بخونم و در center نشون بدم.
    راستش خوب متوجه نشدم منظورت رو اما مشکلی نیست ، میتونی هر چیزی رو ست کنی .
    __________________________________________________________________________
    -- - RezaWorkShop.ir - blog.RezaOnline.net
    ۱۳۹۱ آبان ۱ ۰۶:۳۴ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    pary_daryayi آفلاین
    Mermaid
    ****

    ارسال‌ها: 615
    تاریخ عضویت: ۱۳۹۱ خرداد ۲۸
    اعتبار: 19
    تشکرها : 724
    ( 204 تشکر در 116 ارسال )
    ارسال: #9
    RE: متد output()
    ----------------- ویرایش : حل شد .Smile
    __________________________________________________________________________
    آرام باش ؛ توكل كن ؛ تفكر كن و سپس آستينها را بالا بزن , آنگاه دستان خداوند را خواهي ديد كه زودتر از تو دست به كار شده است.امام علي عليه السلام.
    (آخرین ویرایش در این ارسال: ۱۳۹۱ آبان ۲ ۰۲:۱۸ عصر، توسط pary_daryayi.)
    ۱۳۹۱ آبان ۱ ۰۶:۵۲ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    « قدیمی تر | تازه‌ تر »

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


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