در صفحات مختلف یک وب سایت معمولا بخش هایی وجود دارند که ثابت هستند و در مکان های مختلف تکرار می شوند ، مانند بلوک آخرین مطالب ، لوگوهای دوستان ، فرم خبرنامه و … ، در این مواقع برای جلوگیری از تکرار کد و راحت تر شدن کار از element ها استفاده می کنیم .
برای ایجاد یک فایل element در کیک پی اچ پی وارد پوشه elements از بخش views شوید و یک فایل با نام دلخواه و پسوند ctp. ایجاد کنید سپس کدهای مد نظرتان را داخل آن وارد کنید ، برای نمایش element مورد نظرتان در سایر فایلهای بخش view هم از دستور زیر استفاده کنید :
echo $this->element('element_name');
برای آشنایی بیشتر با این بخش یک element ایجاد می کنیم که آخرین مطالب موجود در پایگاه داده را نمایش دهد.
در مرحله اول یک متد در کنترلر مربوط به مطالب تعریف می کنیم که آخرین مطالب را به ما برگرداند
class PostsController extends AppController { var $name='Posts'; function index() { $posts=$this->Post->find('all',array('limit'=>10)); if(isset($this->params['requested'])) { return $posts; } else { $this->set('posts',$posts); } } }
در اینجا متد index از کنترلر posts رو به شکلی تعریف کردیم که وقتی با استفاده از متد requestAction این متد رو درخواست کردیم مطالب خوانده شده از دیتابیس return شود تا در فایل مربوط به element بتوانیم مورد استفاده قرار دهیم.
حالا در مسیر views/elements یک فایل با نام last_posts.ctp ایجاد کنید و کدهای زیر را داخل آن وارد کنید
Last Posts
<?php $posts=$this->requestAction('posts/index'); if(is_array($posts)) : ?>
-
<?php foreach($posts as $post) : ?>
- <?php echo $this->Html->link($post['Post']['title'],array('controller'=>'posts','action'=>'view',$post['Post']['id'])); ?> <?php endforeach; ?>
حالا هر جا که می خواهید این element رو نمایش بدید از دستور زیر استفاده کنید
echo $this->element('last_posts');
موفق باشید
سلام
بسیار مطلب خوبی بود .
فقط همونطور که توی book رسمی کیک هم اومده تابع requestAction به شدت پرفرمنس برنامه رو میاره پایین . ولی خب این هم یکی از روش هاست .
ممنون
۲۹ تیر ۱۳۹۰ در ۱۱:۰۴ ب.ظ
ممنون مرتضا جان از نکته ای که گفتی
دوستان روش بهینه تر اینه که به جای استفاده از requestAction در element از کد زیر استفاده کنید
ClassRegistry::init(‘Post’)->find(‘all’,array(‘limit’=>10))
۳۰ تیر ۱۳۹۰ در ۶:۲۹ ب.ظ
ممنون از این مطالب عالی و کاربردیت
۳۱ تیر ۱۳۹۰ در ۱۱:۳۰ ب.ظ
ممنون خوب بود. اما به نظرم اگر این مطلب رو بدون استفاده از دیتابیس می ذاشتی مثلاً یک منوی سایت ساده باهاش ایجاد می کردی درکش برای کسایی که اطلاعی ازش ندارن بهتر می شد.
موفق باشی
۲۱ بهمن ۱۳۹۰ در ۳:۲۷ ب.ظ
سلام
ممنونم از آموزش های خوبتون
استفاده کردم
موفق باشید.
۴ اسفند ۱۳۹۰ در ۹:۰۹ ب.ظ
سلام استادمطالبتون خیلی کامل ومفید ممنون از اموزشهای خوبتون. ممکن کد منو افقی که کشوی باز میشن
توی سایت بزارین یا برام میلشون کنین ممنونم از کمکتون
۶ خرداد ۱۳۹۱ در ۴:۵۰ ب.ظ
با سلام و خسته نباشید
آقا خیلی ممنون از آموزش خوبتون
اگه میشه بازم از این آموزشهای روان و ساده تون قرار بدید
با تشکر فراوان
۲۰ مرداد ۱۳۹۱ در ۴:۱۰ ب.ظ