وحید حاجی پور 105 ارسال شده در آذر 90 سلام قبلا داخل تاپیک آموزش کامپوننت نویسی یه بخشی بود که می خواستم ایجکس کردن کامپوننت ها رو توضیح بدم ولی به دلایلی که بار علمی اون تاپیک یکم پایین بود و اون زمانی که من اون رو می نوشتم چیزی سر در نمی اوردم البته الانم چیزی سر در نمی یارم : به همین دلیل ترجیح می دم یه تاپیک جدید بزنم خوب بریم سراغ یه سری چیزا که فکر کنم اصل کارین این آموزش را چه کسی باید بخواند(کلیشه ای یه ولی اصولیه ) به درد کسی که با پي اچ پی آشنا باشه . از ساختار ام وی سی هم یکم بدونه . خوب برای اینکه از ایجکس استفاده کنیم باید یه سری توابع جاوا اسکریپت رو تعریف کنیم . این دستورات باید در بخش tmpL تعریف کنیم یعنی بخش VIEW نمونه کدی که داخل سایت جوملای جهانی بود رو هم اینجا می زارم تا ببینیم چی می شه . خوب این کدی که بالا بود اګر یه کمی به جاوا اسکریپت آشنا باشید می تونید بفهمید چه کرده فقط این رو بګم که خیلی مهمه اګر با انتهای کد ها نګاه کرده باشید option=com_user&task=listcity&country_id="+country_id این کدی که در بالا اومده می یاد و یه سری توابع رو برای صدا کردن معرفی می کنه و یه مقدار رو به تابع ارسال می کنه. تابعی که قراره از داخل کنترلر صدا زده بشه اسم اش جلوی کلمه ی task می یاد و مقداری که به اون تابع پاس داده می شه هم اسم متغییری هست اش که درون تابع تعریف شده که اینجا اسم اش country_id هست اش بس ما باید با این حساب یه تابع داخل کنترلر به نام listcity داشته باشیم و مقدار رو به اون ارسال کنیم function listcity() { global $mainframe; $country_id=JRequest::getVar( 'country_id'); $model = $this->getModel('register'); $states = $model->getStates($country_id); $return = "<?xml version=\"1.0\" encoding=\"utf8\" ?>"; $return .= ""; $return .= "".JText::_( '---Select city---' ).""; if(is_array($states)) { foreach ($states as $state) { $return .="".JText::_($state->state_name).""; } } $return .= ""; echo $return; $mainframe->close(); } خوب برای اینکه مقدار رو به این تابع بدیم مثل کد بالا باید توسط تابع getVar کوئری استرینګ رو پردازش کنیم و مقدار که جلوی کلمه country_id هست رو بګیریم و به تابع ارسال کنیم . کدی که در بالا مشاهده می کنید دارای یه تابعی هست که شما از داخل مدل فراخوانی می کنیدو نتایج رو برای شما می یاره یعنی تابع اصلی که مقادیر رو برای ما می یاره تابع getStates هست اش که داخل مدل فراخوانی شده و مقداری رو بازګشت می ده مقدار بازګشتی در قالب ایکس ام ال به صفحه درخواست دهنده بازګشت داده می شه موفق باشید . امید وارم بهتر از مطالب قبلیم توضیح داده باشم .:afro::thankyou: نقل قول به اشتراک گذاری این ارسال لینک به ارسال به اشتراک گذاری در سایت های دیگر