• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
یه مشکل کوچیک با construct
#1
سلام دوستان .
من یه کنترلر بنام manage.php دارم .میخوام تا این صفحه رو در url وارد کردم ، بدون فراخوانی هیچ متدی ، صفحه ی مدیریت رو بیاره.اینطور نوشتم:
بخشی از کد من:
کد پی‌اچ‌پی:
public function __construct()
    {
        
parent::__construct();
        
$this->load->model('model_home','',TRUE);
        
$data['page'] = 'home';// ********** send to all view
        
$this->load->vars($data);
        
$this->_out();
           
    }
function 
_out($foldermain='admin',$folder ='tem'$name 'panel' ,$data= array('not_things'=>'empty'))
    {
                        
                
$this->load->view('admin/tem/menu');
                
$this->load->view('admin/tem/header');
                
$this->load->view("$foldermain/$folder/$name",$data);
                
$this->load->view('admin/tem/footer');

            
    } 
الان مگه نباید متد _out چون در construct اومده اجرا بشه ؟
ولی این اتفاق نمیفته و error 404 رو میده.
ولی اگر به این شکل بنویسم بدون فراخوانی متدی اجرا میشه.یه متد index گذاشتم.
کد پی‌اچ‌پی:
public function __construct()
    {
        
parent::__construct();
        
$this->load->model('model_home','',TRUE);
        
$data['page'] = 'home';// ********** send to all view
        
$this->load->vars($data);
       
           
    }
    
    public function 
index()
    {
        
$this->_out();
    }
function 
_out($foldermain='admin',$folder ='tem'$name 'panel' ,$data= array('not_things'=>'empty'))
    {
                        
                
$this->load->view('admin/tem/menu');
                
$this->load->view('admin/tem/header');
                
$this->load->view("$foldermain/$folder/$name",$data);
                
$this->load->view('admin/tem/footer');

            
    } 
میشه بگید اشکال کد اول چیه ؟ ظاهرا که باید اجرا بشه.
آرام باش ؛ توكل كن ؛ تفكر كن و سپس آستينها را بالا بزن , آنگاه دستان خداوند را خواهي ديد كه زودتر از تو دست به كار شده است.امام علي عليه السلام.
  پاسخ
تشکر شده توسط :
#2
شما اول باید یه متد ایندکس داشته باشی که بعنوان صفحه اصلیت باشه بعدش میتونی کارات رو انجام بدی توش
پس دومیه درسته نه اولی:دی
تونل ها مي گويند : راه هست؛ حتي در دل سنگ ها.Wink
استفاده از دکمه تشکر(Heart) نشان شخصیت شماست;
درگاه پرداخت 724
  پاسخ
تشکر شده توسط : pary_daryayi Reza
#3
آخه در تعریف متد سازنده گفته شده :
"متد سازنده ، متدی است که در هربار ايجاد نمونه‌اي جديد از آن كلاس، بصورت خودكار فراخواني مي‌گردد. هدف از سازنده، تخصيص‌دهي اعضاي كلاس در زمان ايجاد نمونه‌اي جديد از كلاس است. "
و این یعنی اینکه باید
کد پی‌اچ‌پی:
$this->_out(); 
هم بطور خودکار فراخوانی و اجرا بشه . همونطور که کدهای قبلش در construct اجرا شدن و جواب دادن.فقط این نتیجه نداده.
آرام باش ؛ توكل كن ؛ تفكر كن و سپس آستينها را بالا بزن , آنگاه دستان خداوند را خواهي ديد كه زودتر از تو دست به كار شده است.امام علي عليه السلام.
  پاسخ
تشکر شده توسط :
#4
صد در صد همین طوره.
شاید دلایل دیگه ایی وجود داشته باشه برای اینکه متد اجرا نشه (شاید اجرا می شه ولی عمل نمی کنه!)
یه echo بذار توی متد out_ ببین چی می شه (اسمایلی عدم تجربه CIیایی)
  پاسخ
تشکر شده توسط : pary_daryayi
#5
ممنونم. echo گذاشتم اتفاقی نیفتاد .
error 404 میده . در صورتی که در متد index این مشکل وجود نداره.
اصلا برای لود شدن یک صفحه اونو در construct‌ صدا زدن درسته ؟
راستی یه سوال : "اسمایلی " یعنی چی ؟ خیلی از بچه های انجمن اینو میگن ولی من نمیدونم یعنی چی ؟!!Blush
آرام باش ؛ توكل كن ؛ تفكر كن و سپس آستينها را بالا بزن , آنگاه دستان خداوند را خواهي ديد كه زودتر از تو دست به كار شده است.امام علي عليه السلام.
  پاسخ
تشکر شده توسط :
#6
شاید CI خروجی رو بافر می کنه یا اتفاقی قبل از echo می فته و نمی زاره که دستور echo اجرا بشه.
بجاش die بزار یا توی فایل یه مقدار رو بنویس!

--
اسمایلی = شکلک = smile = ادای و شکلک چیزی رو درآوردن مثه Smile برای شکلک لبخند یا ...
مثلا می گیم "اسمایلی سیبیل تاب دادن" چون شکلکی نداریم که سبیل تاب بده بجاش از اسمش استفاده می کنیم
(به جمع ما خوش اومدی Big Grin )
  پاسخ
تشکر شده توسط : Reza undefined pary_daryayi
#7
نقل قول:الان مگه نباید متد _out چون در construct اومده اجرا بشه ؟
ولی این اتفاق نمیفته و error 404 رو میده.
وقتی شما یک آدرس رو درخواست میکنی ، توی CI روتر با توجه به آدرس شما رو به کنترلر و متد موردنظر میفرسته .
اگه توی آدرس متد/اکشن ست نشده باشه ، پیشفرض index در نظر گرفته میشه .
بعد وجود کلاس کنترلر و متد اکشن چک میشه ، اگه یکی از این دو تا نبود خطای 404 میگیرید .
یه چیزم فراموش نکن شما داری با فریم ورک کار میکنی پس باید قوانینش رو رعایت کنید .
متدهای جادویی رو هم یکبار دیگه بخون
  پاسخ
تشکر شده توسط : masoud1990 pary_daryayi
#8
دقیقا همین چیزی که آقا رضا گفتن رو میخواستم بگم که گفتن دیگه:دی
بعدشم شما تعریف از متد سازنده توی کلاس ها یکمی فکر کنم توی ذهنت اشتباه باشه:دی
متد سازنده برای یه چیزایی مثل اینکه مثلا تو میخوای همیشه چک کنی ببینی طرف لاگین کرده یا نه و بجای اینکه این رو توی هر متدی بنویسی میای توی متد سازنده میزاریش و اینجور استفاده هایی داره:دی
تونل ها مي گويند : راه هست؛ حتي در دل سنگ ها.Wink
استفاده از دکمه تشکر(Heart) نشان شخصیت شماست;
درگاه پرداخت 724
  پاسخ
تشکر شده توسط : Reza pary_daryayi
#9
درسته ، متوجه شدم . اصلا وارد صفحه نمیشه که بخواد construct رو اجرا کنه. چون باید تو url ، اول متد ست بشه. جالب بود .
هیچ مثالی ندیده بودم که بخوان با این روش صفحه رو اجرا کنند ، ولی میخواستم امتحان کنم. از همتون ممنونم.

نقل قول:اسمایلی = شکلک = smile = ادای و شکلک چیزی رو درآوردن مثه Smile برای شکلک لبخند یا ..
من فکر میکردم smile فقط معنی لبخند میده.

نقل قول:به جمع ما خوش اومدی
پس فکر میکنم خیلی از این به بعد استفاده کنم، چون آدمکهایی که من میخوامو نداره .Smile
آرام باش ؛ توكل كن ؛ تفكر كن و سپس آستينها را بالا بزن , آنگاه دستان خداوند را خواهي ديد كه زودتر از تو دست به كار شده است.امام علي عليه السلام.
  پاسخ
تشکر شده توسط : masoud1990
#10
نقل قول:من فکر میکردم smile فقط معنی لبخند میده.
اره دست فک کردی. smile درواقع اشاره داره به این > Smile
فک کنم چون این اولین شکلک بوده. بعد اسم شده برای بقیه هم Smile

نقل قول:پس فکر میکنم خیلی از این به بعد استفاده کنم، چون آدمکهایی که من میخوامو نداره .
یه اسمایلی برای اینکه بگیره می بایست توش خلاقیت باشه Tongue
  پاسخ
تشکر شده توسط : pary_daryayi


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان