بعد از یک مدت تقریبا طولانی ننوشتن در اینجا، در این پست قصد دارم به طور خلاصه درمورد آژاکسی کردن صفحهبندی پیشفرض CakePHP توسط jQuery بنویسم.
ابتدا آخرین نسخهی jQuery را دریافت و آن را به صورت زیر در layout فراخوانی کنید. دقت کنید jQuery تان ویرایش 1.3 یا به بالا باشد چون قرار است از تابع live که در این ویرایش افزوده شده است استفاده کنیم:
<?php
echo $javascript->link('jquery-1.3.2.min');
?>
پیشنهاد میکنم برای تکه کد زیر که قرار است درخواست کلیک بر روی لینک صفحات را به صورت آژاکس ایجاد کند، یک فایل js جدید بسازید یا اینکه میتوانید آن را مستقیم در layout اضافه کنید:
$('a[href*=/page:]').live('click', function(){
$('#content').load($(this).attr('href'));
return false;
});
کار تمام است با کلیک بر روی شماره صفحات محتوا به صورت آژاکس بارگذاری میشود. اما یکسری نکات ریز که شاید از قلم انداخته باشید:
کامپوننت RequestHandler را میبایستی به کنترلرتان افزوده باشید. دلیل آن روشن است چرا که باید نوع تقاضای کنترلر را، تشخیص دهد و layout را بصورت خودکار به Ajax تبدیل کند. برای درک بیشتر این موضوع پیشنهاد میکنم تغییرات بوجود آمده درپی افزودن یا حذف این کامپوننت را از طریق کنسول FireBug دنبال کنید.
مقدار #content نشانگر id عنصری است که محتوا را در بر دارد. این مقدار layout پیشفرض کیک است اگر برای محتوا id یا class دیگری تعریف کردهاید روشن است که آن را باید تغییر دهید.
کمی بیشتر
با افزودن a[href*=/sort:] به کد بالا میتوانید مرتبسازی عناصر را هم در یک جدول داده پیشفرض کیک به صورت آژاکس داشته باشید:
$('a[href*=/sort:],a[href*=/page:]').live('click', function(){
$('#content').load($(this).attr('href'));
return false;
});
خواندنیهای کمکی دیگر
+ اگر از ویرایشهای پایین jQuery استفاده میکنید، پلاگین Livequery می توانید جایگزینی برای تابع live باشد.
+ اگر هنوز نمیدانید چگونه صفحهبندی را در app تان ایجاد کنید، به مستندات کیک در اینجا مراجعه کنید.
+ همچنین در اینجا توضیح داده شده چگونه میتوانید این کار را بدون jQuery و البته با استفاده از فریمورک prototype انجام دهید.
صالح
مثل همیشه عالی بود
May 31, 2009 at 1:02 pm
یزدان پرست
ممنون دست شما درد نکنه
June 2, 2009 at 8:52 am
یزدان پرست
خسته نباشید پیشنهاد می کنم یکم برای مبتدی ها اگه امکان داره ساده تر بنویسید سپاس
June 2, 2009 at 9:06 am
mohsen
مرثی .امیدوارم همیشه موفق باشی (خیر ببینی ننه)
اما یه مساله که بشدت منو اذیت میکنه اینه که تو یکی از پستهات خوندم که به زودی دمینت اکسپایر میشه.می شه بگی این اتفاق نا میمون کی میفته؟
June 2, 2009 at 11:58 pm
mohsen
سلام اگه امکانش هست کمی در مورد لی اوت صحبت کن.واقعا گیج شدم
June 11, 2009 at 10:05 pm
محمد
آژاکس نه، ای جکس (ey jax)
September 21, 2009 at 2:30 pm
صالح
با سلام و عرض ادب
خدمت استاد بزرگم
خدمت شما به عرض می رسانم. با کمک عده ای از دوستان. یک فروم برای cakephp ایجاد کردیم.
لذا از شما دعوت می نماییم . با توجه به وقت محدود خود. ما را در فراگیر کردن این فریم ورک کمک نمائید.
آدرس فروم : http://www.cakephp.ir
منتظر دیدار شما هستیم
October 10, 2009 at 12:59 am
honeyamin
سلام خواستم ببینم آیا برنامه ای برای ساخت بعضی ازajaxها هست؟؟؟؟؟؟؟ممنون
October 26, 2009 at 10:05 am