کار با element ها در کیک پی اچ پی

در صفحات مختلف یک وب سایت معمولا بخش هایی وجود دارند که ثابت هستند و در مکان های مختلف تکرار می شوند ، مانند بلوک آخرین مطالب ، لوگوهای دوستان ، فرم خبرنامه و … ، در این مواقع برای جلوگیری از تکرار کد و راحت تر شدن کار از 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; ?>
<?php endif; ?>

حالا هر جا که می خواهید این element رو نمایش بدید از دستور زیر استفاده کنید


echo $this->element('last_posts');

موفق باشید


تا كنون ۷ نظر برای اين پست ثبت شده است


  1. سیدمرتضا گقته :

    سلام
    بسیار مطلب خوبی بود .
    فقط همونطور که توی book رسمی کیک هم اومده تابع requestAction به شدت پرفرمنس برنامه رو میاره پایین . ولی خب این هم یکی از روش هاست .
    ممنون

    ۲۹ تیر ۱۳۹۰ در ۱۱:۰۴ ب.ظ

  2. پیام گقته :

    ممنون مرتضا جان از نکته ای که گفتی

    دوستان روش بهینه تر اینه که به جای استفاده از requestAction در element از کد زیر استفاده کنید

    ClassRegistry::init(‘Post’)->find(‘all’,array(‘limit’=>10))

    ۳۰ تیر ۱۳۹۰ در ۶:۲۹ ب.ظ

  3. صالح گقته :

    ممنون از این مطالب عالی و کاربردیت

    ۳۱ تیر ۱۳۹۰ در ۱۱:۳۰ ب.ظ

  4. امیر د گقته :

    ممنون خوب بود. اما به نظرم اگر این مطلب رو بدون استفاده از دیتابیس می ذاشتی مثلاً یک منوی سایت ساده باهاش ایجاد می کردی درکش برای کسایی که اطلاعی ازش ندارن بهتر می شد.

    موفق باشی

    ۲۱ بهمن ۱۳۹۰ در ۳:۲۷ ب.ظ

  5. امیرحسین گقته :

    سلام

    ممنونم از آموزش های خوبتون
    استفاده کردم
    موفق باشید.

    ۴ اسفند ۱۳۹۰ در ۹:۰۹ ب.ظ

  6. مرضیه گقته :

    سلام استادمطالبتون خیلی کامل ومفید ممنون از اموزشهای خوبتون. ممکن کد منو افقی که کشوی باز میشن
    توی سایت بزارین یا برام میلشون کنین ممنونم از کمکتون

    ۶ خرداد ۱۳۹۱ در ۴:۵۰ ب.ظ

  7. میثم گقته :

    با سلام و خسته نباشید
    آقا خیلی ممنون از آموزش خوبتون
    اگه میشه بازم از این آموزشهای روان و ساده تون قرار بدید
    با تشکر فراوان

    ۲۰ مرداد ۱۳۹۱ در ۴:۱۰ ب.ظ