رفتن به مطلب
وحید حاجی پور

افزودن ایجکس به کامپوننت ها

پست های پیشنهاد شده

سلام قبلا داخل تاپیک آموزش کامپوننت نویسی یه بخشی بود که می خواستم ایجکس کردن کامپوننت ها رو توضیح بدم ولی به دلایلی که بار علمی اون تاپیک یکم پایین بود و اون زمانی که من اون رو می نوشتم چیزی سر در نمی اوردم البته الانم چیزی سر در نمی یارم :D:

به همین دلیل ترجیح می دم یه تاپیک جدید بزنم

خوب بریم سراغ یه سری چیزا که فکر کنم اصل کارین

این آموزش را چه کسی باید بخواند(کلیشه ای یه ولی اصولیه )

به درد کسی که با پي اچ پی آشنا باشه .

از ساختار ام وی سی هم یکم بدونه .

خوب برای اینکه از ایجکس استفاده کنیم باید یه سری توابع جاوا اسکریپت رو تعریف کنیم . این دستورات باید در بخش 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:

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

به گفتگو بپیوندید

هم اکنون می توانید ارسال داشته باشید و بعد ثبت نام خود را در سایت کامل نمایید. اگر حساب کاربری در سایت دارید، جهت ارسال با حساب کاربری خود هم اکنون وارد سایت شوید

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.


×
×
  • افزودن...