PDA

View Full Version : ارسال مقادیر



reza.palang
چهارشنبه 20 آبان 1388, 22:35 عصر
سلام. باز هم من
یه سوال داشتم
به صفحات استاتیک چطور میشه مقادیر ارسال کرد؟ به pages controller
مثلا به home.ctp
و آبا این امکان هست که به layaoutها مقدار ازسال کرد؟
مثلا

<?php echo $content_for_layout; ?>
که توی default.ctp هست چطور ارسال شده؟

zoghal
پنج شنبه 21 آبان 1388, 09:02 صبح
بله. میشه. اگر جواب مثلاتون رو بخوام بدم به این صورت هست.


$this->set('content_for_layout', 'salam');



و روش استفاده هم به این صورت
/pages_controller.php


function heloo(){
$this->set('Msg', 'salam');
}

/view/pages/heloo.ctp


echo $Msg;

reza.palang
پنج شنبه 21 آبان 1388, 09:28 صبح
تشکر فراوان برای جواب
اونوفت این pages_controller.php باید توی دایرکتوری controllers قرار بگیره دیگه. آره؟
و در مورد مقادیری که قراره توی layout استفاده بشه این action کجا باید ساخته بشه؟

zoghal
پنج شنبه 21 آبان 1388, 10:03 صبح
خواهش.
1- خوب هر کنترلری که شما ایجاد میکنید. باید در فولدر controllers قرار بگیره.

2- ببینید. layout ها هون استایل کلی یا چهار چوب پروژه تون هست. اگر شما 100تا view , elements داشته باشید. آخرش همیه اینها در layout نمایش داده میشه.

در اصل شما مقادیرتون رو به view ها میفرستید. شما برای هر action که خروجی داشته باشه باید یک view داشته باشید.(به طور معمول)
فرضا ما اگر یک کنترلر به اسم posts داشته باشیم. و در این کترلر 4 عمل اصلی مثل لیست. اضافه کردن و ویرایش کردن . خذف کردن داشته باشیم.

شما اینجا 4 تا اکشن دارید.
1-function index
2- function add
-function edit
4- function delete
که در 3 تای اول شما چون خروجی دارید. پس باید 3 تا view داشته باشی. که مقادیر خروجی رو با $this->set به ویو ها مفرستی

reza.palang
پنج شنبه 21 آبان 1388, 10:11 صبح
از توضیح کاملی که دادی ممنونم . اینا رو میدونم. بیشتر مد نظرم هست که مثل مقدار $content_for_layou که توی layout هست ولی توی تمام اکشن ها به viewارسال نمیشه و فقط یک بار این کار انجام میشه.
دقیق تر بخوام بگم اینجوری میشه:
یه سری مقدار هست که توی تمام صفحات باید استفاده بشه. در حال حاضر توی هر اکشن اینا رو میفرستم به viewها. اما چطور این تکرار کد رو میشه حذف کرد؟

zoghal
پنج شنبه 21 آبان 1388, 10:48 صبح
منظورت رو از تکرار نمی فهمم. مثال واضح تری میزنی

reza.palang
پنج شنبه 21 آبان 1388, 12:40 عصر
منظورم اینه که اگر بخوام از مقدار ax توی تمام صفحات استفاده کنم باید عبارت زیر رو توی تما اکشن ها تکرارکنم

$this->set('ax', 'salam');
که کار سخت و بیهوده ای هست. در صوزتی که متغیر هایی توی lauoyt/default.ctp هست که از جایی مقدار دهی میشن.
اگر این مقادیر فقط یک بار برای همیشه فرستاده یشن مشکلات کمتری به وجود میاد

zoghal
پنج شنبه 21 آبان 1388, 14:25 عصر
فهمیدم چرا میشه.
تو فولدر app یک فایل به نام app_controller.php ایجاد میکنی با این کد


<?php

class AppController extends Controller {

function beforeRender()
{
$this->set('Saleh','aaaaaaaaaaa');
}

}
?>


حال در هر جا از ویو هات دوست داشتی echo $Saleh رو بزنی aaaaaaaaaa رو چاپ میکنه