زمان جاری: 2012/05/25, 01:59 PM
خوش آمدید مهمان گرامی! (ورود — عضویت)
سوال در مورد ابزارک ها (widgets,blocks,partials or moduls)
- 0 رای - 0 میانگین
- 1
- 2
- 3
- 4
- 5
رتبه موضوع:
|
سوال در مورد ابزارک ها (widgets,blocks,partials or moduls)
|
| نویسنده |
پیام |
person
عضو جدید

ارسالها: 16
تاریخ عضویت: Jul 2011
رتبه: 0
تشکر: 18
2 بار تشکر شده در 1 پست
|
RE: سوال در مورد ابزارک ها (widgets,blocks,partials or moduls)
من نمی گم مغایره که استاد، می گم من نمی پسندم
توی همین مثالی که شما زدین قراره حساب کتاب هایی نظیر اینکه کاربر لاگین کرده یا نکرده رو توی کنترلر چک کنیم دیگه، حالا فرض کنید تعداد و نوع ابزارک ها زیاده و علاوه بر این ساختار برنامه قراره طوری باشه که ادمین کنترل کاملی (جای ابزارک، پارامترهای ابزارک و...) بر روی ابزارک ها داشته باشه، با این وجود کجا باید این حساب کتاب ها انجام بشه؟
مثلا توی Yii و CI (به کمک یک Helper) یک کلاس داریم به اسم widget (که هم به کلاس های کار با بانک اطلاعاتی دسترسی داره و هم به کلاس های مربوط به نمایش) برای ساختن یه ابزارک کافیه همانند یه کنترلر عمل کنیم، یه کلاس از widget مشتق می کنیم و توی توابعش حساب کتاب هامون رو انجام میدیم و مقادیر رو به نماها پاس میدیم و خروجی نما رو به صورت یه رشته دریافت می کنیم و به درخواست کننده تحویل میدیم، روش فراخوانیش هم یه چیزی شبیه requestAction توی کیکه.
با این تفاسیر سوال من اینه که توی کیک اساسن میشه یه کاری شبیه این انجام داد؟
|
|
| 2011/07/23 05:15 PM |
|
تشکر شده توسط : | |
|
Arman_gh
تازه کار

ارسالها: 24
تاریخ عضویت: Sep 2010
رتبه: 0
تشکر: 8
15 بار تشکر شده در 10 پست
|
RE: سوال در مورد ابزارک ها (widgets,blocks,partials or moduls)
مثل اینه سو تفاهم شده بنده قصد جسارت نداشتم.شوخی کردم در پست قبلی. اما برگردیم سر بحث
من این کار رو انجام دادم جای ابزارک ها و پارامترها رو توسط کلاسی با نام widget تعریف میکنم. که در این کلاس جدولی داریم به نام widgets که مکان و محل قرارگیری و پارامترها را از آن لود میکنیم.
|
|
| 2011/07/23 05:27 PM |
|
تشکر شده توسط : | |
|
person
عضو جدید

ارسالها: 16
تاریخ عضویت: Jul 2011
رتبه: 0
تشکر: 18
2 بار تشکر شده در 1 پست
|
RE: سوال در مورد ابزارک ها (widgets,blocks,partials or moduls)
میدونم که شوخی بود عزیز
اگه یه تکه کد بزاری ممنون میشم
لقمه آماده نمیخاما! به دلیل اینکه تازه دارم کیک یاد میگیرم ازتون میخام یه تکه کد بزاری
|
|
| 2011/07/23 05:47 PM |
|
تشکر شده توسط : | |
|
Arman_gh
تازه کار

ارسالها: 24
تاریخ عضویت: Sep 2010
رتبه: 0
تشکر: 8
15 بار تشکر شده در 10 پست
|
RE: سوال در مورد ابزارک ها (widgets,blocks,partials or moduls)
شرمده پروژه طوری هست که مجاز نیستم کد بزارم. ولی توضیح میدم خدمتون. جدولی دارم به طور ساده با این مشخصات
title
position
sort
enable
بعد در اکشنی فرضا به نام configwidgets اطلاعاتی را از مکان و چینش و وضعیت و ... میفرستیم به این اکشن و اطلاعات رو دخیره میکنیم در جدول widgets. بعد element ها رو با foreach لود میکنیم.
|
|
| 2011/07/23 06:06 PM |
|
person
عضو جدید

ارسالها: 16
تاریخ عضویت: Jul 2011
رتبه: 0
تشکر: 18
2 بار تشکر شده در 1 پست
|
RE: سوال در مورد ابزارک ها (widgets,blocks,partials or moduls)
کجا این کارها رو میکنی؟
تو app_controller؟
|
|
| 2011/07/23 06:23 PM |
|
تشکر شده توسط : | |
|
Arman_gh
تازه کار

ارسالها: 24
تاریخ عضویت: Sep 2010
رتبه: 0
تشکر: 8
15 بار تشکر شده در 10 پست
|
RE: سوال در مورد ابزارک ها (widgets,blocks,partials or moduls)
نه در کنترلر widgets پیکربندی انجام میشه ولی نمایش ابزارک ها بستگی به نیاز خودتون داره.
|
|
| 2011/07/23 06:34 PM |
|
تشکر شده توسط : | |
|
person
عضو جدید

ارسالها: 16
تاریخ عضویت: Jul 2011
رتبه: 0
تشکر: 18
2 بار تشکر شده در 1 پست
|
RE: سوال در مورد ابزارک ها (widgets,blocks,partials or moduls)
درست متوجه نشدم
شما یه کنترلر داری برای مدیریت (ساختن، ویرایش، حذف و ...) ابزارک ها
حالا مثلن تو کنترلر articles میخای ابزارک هایی که ساختی رو نشون بد، چطور این کارو می کنی؟
|
|
| 2011/07/23 06:47 PM |
|
تشکر شده توسط : | |
|
Arman_gh
تازه کار

ارسالها: 24
تاریخ عضویت: Sep 2010
رتبه: 0
تشکر: 8
15 بار تشکر شده در 10 پست
|
RE: سوال در مورد ابزارک ها (widgets,blocks,partials or moduls)
در کنترل articles اکشن index هستیم. نمای این اکشن index.ctp هست. درون این نما المنت ها را فراخوانی میکنیم.
کد PHP:
foreach ($widgets as $widget): echo $this->element($widget['Widget']['title']) ابزارک های مربوطه را هم اکشن ایندکس فرخوانی میکنید.
|
|
| 2011/07/23 07:01 PM |
|
person
عضو جدید

ارسالها: 16
تاریخ عضویت: Jul 2011
رتبه: 0
تشکر: 18
2 بار تشکر شده در 1 پست
|
RE: سوال در مورد ابزارک ها (widgets,blocks,partials or moduls)
حساب کتاب ها رو هم توی المنت ها انجام میدی دیگه درسته؟
|
|
| 2011/07/23 07:07 PM |
|
تشکر شده توسط : | |
|
Arman_gh
تازه کار

ارسالها: 24
تاریخ عضویت: Sep 2010
رتبه: 0
تشکر: 8
15 بار تشکر شده در 10 پست
|
RE: سوال در مورد ابزارک ها (widgets,blocks,partials or moduls)
نه عملیات منطقی در اکشن هر المنت انجام میشه از طریق requestAction که اکشن میتونه توی widget باشه مثلا یک ابزارک داری برای تازه ترین ها. تو این ابزارک مینویسی
[php]
$data = $this->requestAction(''widgets/new)
['Post']['title']echo $data
|
|
| 2011/07/23 07:26 PM |
|
saleh
Administrator
      
ارسالها: 992
تاریخ عضویت: Dec 2009
رتبه: 12
تشکر: 402
872 بار تشکر شده در 561 پست
|
RE: سوال در مورد ابزارک ها (widgets,blocks,partials or moduls)
بحث جالب و کاملی شد.
لازم دیدم 2 تا نکته رو بگم.
1- در مورد mvc و مورد صحبت شده باید خدمتتون بگم ما اینجا داریم در مورد element صحبت میکنیم. نه view . المنت درسته از نوع ویو حساب میشه اما در واقع partial هست و می تونه ساختار و محتوای جدا از ویو ما داشته باشه.
شما در مورد widget ها در yii صحبت کردید. اگر دقت کنید. در yii هم داره عملیات رو در ویو انجام میده درسته در کلاس CWidget یا کلاس به ارس برده از این کلاس انجام میشه. اما در منطق پروسس داره در لاسه ویو انجام میشه. در کیک هم اگر بخواهید این مورد رو پیاده سازی کنید باید یک هلپر ایجاد کنید.
بهترین مثالی که می تونم بزنم پلاگین cake_grid هست.
کد PHP:
https://github.com/rross0227/CakeGrid/
در این پلاگین همانند widget عمل شده.
(آخرین تغییر در این ارسال: 2011/07/24 02:10 AM توسط saleh.)
|
|
| 2011/07/24 02:08 AM |
|
person
عضو جدید

ارسالها: 16
تاریخ عضویت: Jul 2011
رتبه: 0
تشکر: 18
2 بار تشکر شده در 1 پست
|
RE: سوال در مورد ابزارک ها (widgets,blocks,partials or moduls)
(2011/07/24 02:08 AM)saleh نوشته است: 1- در مورد mvc و مورد صحبت شده باید خدمتتون بگم ما اینجا داریم در مورد element صحبت میکنیم. نه view . المنت درسته از نوع ویو حساب میشه اما در واقع partial هست و می تونه ساختار و محتوای جدا از ویو ما داشته باشه.
چرا ما باید این استثنا رو برای partial ها در نظر بگیریم؟ اون هم در شرایطی که اغلب partial ها نیاز به منطق دارن و علاوه بر این تیم یا کسی که توی یه پروژه کار طراحی رو انجام میده (که احتمالا چندان در جریان طرز کار برنامه و فریمورکش نیست) صرفن یه قالب کلی رو طراحی نمی کنه بلکه باید تمام اجرای صفحه رو بسازه
(2011/07/24 02:08 AM)saleh نوشته است: شما در مورد widget ها در yii صحبت کردید. اگر دقت کنید. در yii هم داره عملیات رو در ویو انجام میده درسته در کلاس CWidget یا کلاس به ارس برده از این کلاس انجام میشه. اما در منطق پروسس داره در لاسه ویو انجام میشه. در کیک هم اگر بخواهید این مورد رو پیاده سازی کنید باید یک هلپر ایجاد کنید.
در این پلاگین همانند widget عمل شده.
ما از طریق کتابخانه ای (مثلا یه کلاس template) می تونیم ابزارک ها رو فراخوانی کنیم و خروجیشون رو به نما ارسال کنیم و این همون چیزیه که من توی کیک دنبالشم.
یه سوال: توی کیک میشه کلاس های هسته رو override کرد؟
(آخرین تغییر در این ارسال: 2011/07/25 08:55 PM توسط person.)
|
|
| 2011/07/25 08:53 PM |
|
تشکر شده توسط : | |
|
saleh
Administrator
      
ارسالها: 992
تاریخ عضویت: Dec 2009
رتبه: 12
تشکر: 402
872 بار تشکر شده در 561 پست
|
RE: سوال در مورد ابزارک ها (widgets,blocks,partials or moduls)
کد:
چرا ما باید این استثنا رو برای partial ها در نظر بگیریم؟ اون هم در شرایطی که اغلب partial ها نیاز به منطق دارن و علاوه بر این تیم یا کسی که توی یه پروژه کار طراحی رو انجام میده (که احتمالا چندان در جریان طرز کار برنامه و فریمورکش نیست) صرفن یه قالب کلی رو طراحی نمی کنه بلکه باید تمام اجرای صفحه رو بسازه
[/php]
خوب شما هم همین حرف من رو زدید پس لازم داریم که در ویو ها بتونیم به سایر منابع دسترسی داشته باشیم. می مونه بحث جدا سازی منطق و نمایش پروسس.
من هم این موضوع رو دنبالش بودم و 80% نوشتمش .من جز کیک و مقداری زند تا الان با هیچ فرم ورک دیگری کار نکردم.اما همیشه یک سرم تو سورس های ایین فریم ورک ها هست. برای گرفتن ایده و...
براتون یک پلاگین عالی گذاشتم. ببنید چطور با یک helper این کار رو انجام داده؟.
اما در مورد override کردن. شما اون کلاسی که می خواهید override کنید. رو در مسیری که در /lib هست رو در /app کپی کنید.
فرضا اگر کلاس view.php رو بخواهید override کنید باید کلاس خودتون رو در /app/view کپی کنید. کیک کلاس شما رو فراخوانی می کنه
|
|
| 2011/07/25 09:37 PM |
|
person
عضو جدید

ارسالها: 16
تاریخ عضویت: Jul 2011
رتبه: 0
تشکر: 18
2 بار تشکر شده در 1 پست
|
RE: سوال در مورد ابزارک ها (widgets,blocks,partials or moduls)
(2011/07/25 09:37 PM)saleh نوشته است: خوب شما هم همین حرف من رو زدید پس لازم داریم که در ویو ها بتونیم به سایر منابع دسترسی داشته باشیم. می مونه بحث جدا سازی منطق و نمایش پروسس.
ولی این معنیش این نیست که حتمن داخل ویوها از سایر منابع استفاده کنیم، راه معمولش (تو سایر فریمورک ها) اینه که از طریق یه کد واسطه این کارو انجام بدیم و فقط پارامترها رو به ویو ارسال کنیم، مثلن همین پلاگینی که گذاشتین از طریق هلپر حساب کتاب ها رو انجام میده
سوالی که در این زمینه دارم اینه که اگه هلپرها توی کیک اساسن همچین کاربردهایی هم دارن چرا به کلاس view دسترسی ندارن و ما باید دستی لودش کنیم؟
توی CI کلاس هایی که شما توی پروژه تون در قالب library می نویسید و ازشون استفاده می کنین همین مشکل رو دارن، یعنی باید توی این کلاس ها یک instance ایجاد کنیم که بتونیم به کلاس های لود شده توسط CI دسترسی داشته باشیم، این مشکل توی پروژه ای که library هاش زیاد بود خیلی منو درگیر کرد چون به وضوح باعث کندی برنامه شده بود (نمی دونم چرا؟)
حالا در مورد کیک و استفاده از هلپر به عنوان جداکننده منطق از نمایش برای ابزارک ها هم من با تردید به قضیه نگاه می کنم.
سوال: با توجه به تجارب شما از آشپزی با کیک در صورتی که مثلن توی یک صفحه ۳۰ تا ابزارک داشته باشیم (که همگی از هلپر به عنوان جدا کننده استفاده می کنن) و توی همه هلپرهای ابزارک ها کلاس View رو رجیستر کنیم، این باعث کندی کیک نمیشه؟
(آخرین تغییر در این ارسال: 2011/07/26 11:46 AM توسط person.)
|
|
| 2011/07/26 11:40 AM |
|
تشکر شده توسط : | |
|
person
عضو جدید

ارسالها: 16
تاریخ عضویت: Jul 2011
رتبه: 0
تشکر: 18
2 بار تشکر شده در 1 پست
|
RE: سوال در مورد ابزارک ها (widgets,blocks,partials or moduls)
خیلی بحث داره به درازا کشیده میشه و خودمم از اینکه اینهمه می پرسم احساس خوبی ندارم
منتها چاره ای ندارم، ممنون میشم اگه چند پست دیگه ای صبر پیشه کنین
(2011/07/27 01:02 AM)saleh نوشته است: تو کیک تموم کلاس ها از جمله هلپر ها برای یک بار فراخوانی میشند و در کلاس ریجستری نگهداری میشند.
پس مجدید نیاز به لود کردن نیست. و هر وقت لازم داشته باشید میتونید. کلاس رو در دست رس داشته باشید.
اینو می دونم، منتها در مورد مثالی که من زدم قضیه فرق می کنه، برا همین مثالم رو کامل توضیح میدم:
برنامه قراره مثلن ۳۰ نوع ابزارک داشته باشه که ادمین باید بتونه ابزارک هایی از جنس این ۳۰ نوع بسازه، پارامترهاش رو تعریف کنه و ...
توی برنامه هم قراره از هلپر برای جدا کردن منطق ابزارک ها از نماهای ابزارک ها استفاده کنیم، به همین دلیل مجبوریم تو همه هلپرهای ابزارک هایی که نیاز به کلاس ویو و مدل دارن اون ها رو رجیستر کنیم، به این دلیل که ما نمی دونیم ادمین چه ابزارک هایی رو با چه مشخصاتی خواهد ساخت.
حالا اگه ادمین از هر نوع ابزارک یک دونه بسازه و همه این ابزارک ها نیاز به ویو و مدل داشته باشن، کیک چه برخوردی با اینکه ما توی همه شون ویو و مدل رو رجیستر کردیم می کنه؟ آیا عملیات رجیستر کردن ویوها و مدل ها ۳۰ بار انجام میشه؟ یا اینکه ویو فقط بار اول رجیستر شده و از رجیستر شدن مدل های رجیستر شده هم چشم پوشی میشه؟
|
|
| 2011/07/28 04:33 PM |
|
تشکر شده توسط : | |
|
saleh
Administrator
      
ارسالها: 992
تاریخ عضویت: Dec 2009
رتبه: 12
تشکر: 402
872 بار تشکر شده در 561 پست
|
RE: سوال در مورد ابزارک ها (widgets,blocks,partials or moduls)
خواهش میکنم دوست عزیز. من تا اونجایی که تجربیاتم جواب بده درخدمتم. موردی هم باشه که ندونم. حتما روش تحقیق میکنم. پس هیچ ناراحتی وجود نداره.
در مورد سوالتون باید شما رو دعوت کنم به شناخت بهتر کلاس های کیک. ببینید. کلاس view.php کلاسی هست که وظیفه رندر کردن ویو ها و لایوت رو بر عهده داره. و توسط کنترلر مقادیر رو که باید هندل کنه رو میگیره و در اخر به کنترلر بر میگردونه (مثلا داده های فرم.).
این کلاس یکبار توسط کیک include میشه . یک نمونه ازش ساخته میشه و در کلاس ریجستری نگه داره میشه(سایر کلاس ها به این صورت هست.).
شما هزار بار هم که نیار به این کلاس نداشته باشید. باید از همین نمونه ساخته شده استفاده کنید. چون این نمونه شامل اطلاعات لازم و داده ها هست.
پس به طور کلی ساختن یک نمونه دیگر از کلاس ویو اصلا معنی نداره.
شما هر چند با که بگید classRegistere::getobject('view') در اصل همون نمونه ساخته شده رو به شما میده . نه یک نمونه جدید.
اما در مورد این :
نقل قول:حالا اگه ادمین از هر نوع ابزارک یک دونه بسازه و همه این ابزارک ها نیاز به ویو و مدل داشته باشن، کیک چه برخوردی با اینکه ما توی همه شون ویو و مدل رو رجیستر کردیم می کنه؟
بالا گفتم کار این کلاس فقط رندر هست. یعنی شما وقتی از این کلاس استفاده کنید. یک ویو رو بهش میدید این رندر میکنه و خروجی میده. حالا خروجی رو هر جا بخواهید استفاده می کنه.
و دیگر شما هیچ در گیری با این کلاس ندارید.
|
|
| 2011/07/28 08:26 PM |
|
person
عضو جدید

ارسالها: 16
تاریخ عضویت: Jul 2011
رتبه: 0
تشکر: 18
2 بار تشکر شده در 1 پست
|
RE: سوال در مورد ابزارک ها (widgets,blocks,partials or moduls)
خیلی خوب میشد اگه مای بی بی دکمه ۵تشکر هم می داشت
در مورد مدل ها هم اینی که می فرمایین صادقه؟ یعنی مثلن اگه تو ۳ ابزارک به یک مدل نیاز داشته باشیم و تو هر سه مدل مذکور رو رجیستر کرده باشیم، کیک فقط یه بار فرآیند لود کردن رو انجام میده؟
|
|
| 2011/07/28 08:36 PM |
|
تشکر شده توسط : | |
|
saleh
Administrator
      
ارسالها: 992
تاریخ عضویت: Dec 2009
رتبه: 12
تشکر: 402
872 بار تشکر شده در 561 پست
|
RE: سوال در مورد ابزارک ها (widgets,blocks,partials or moduls)
در صورتی که فراخوانی شده باشه بله اما اگر آبجکتی از اون مدل وجود نداشته باشه. واسه بار اول یک نمونه از کلاس رو میزاره تو کلاس ریجستری. سری بعد هون نمونه رو فراخوانی میکنه . نکته لازم این هست که حتما به توابع classRegistery دقت کنید و ببینید هر کدام چه کاربردی داره؟!
اما یک چیز باحال تر، کیک 2 بتا 2-3 روز پیش ریلیز شد. رسما واسه تست یک مقدار کد زدم . دیگه سوئچ کردم روش. واسه این کار شما و کلا این موارد تغییرات خوبی داشته.
کد PHP:
https://github.com/cakephp/docs/blob/master/en/appendices/2-0-migration-guide.rst
قسمت view رو یک نگاهی بندازید.
کلان ترکونده اساسی
|
|
| 2011/07/29 01:41 AM |
|
تشکر شده توسط : | |
|