تالار گفتمان nCIS.ir

نسخه‌ی کامل: استفاده از renderpartial برای قرار دادن یک layout در داخل یک layout دیگه (حل شد)
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
سلام استاد

میشه از renderPartial برای قرار دادن یک layout در داخل یک layout دیگه استفاده کرد؟

منظورم مثل روشیه که از form_ برای فرمهای ایجاد و ویرایش دسته بندی استفاده کردید هست.

متشکرم.
نه نمیشه. برای فراخوانی یک layout داخل layout دیگه باید از متدهای beginContent و endContent کنترلر استفاده کنید. فرض کنید layout شما اینطور تنظیم شده:

public $layout = '/layouts/index';

حالا توی این layout میخواین هرچی خروجی ویو هست رو توی یک div با id برابر با container بگذارین و خروجی رو دوباره برای layout دیگه (مثلاً main) بفرستین:

$this->beginContent('/layouts/main');
<div id="container">
<?php echo $content; ?>
</div>
<?php $this->endContent(); ?>

حالا توی layout اصلی (یعنی main) اگه content$ رو echo کنید، میبینید که محتوای view داخل div قرار گرفته و در مکان موردنظر درج شده.
محتوای content$ چیا هستن؟ همون ویوهایی هستن که برای کنترلر ایجاد کرده ایم؟
بله. وقتی متد render رو صدا میزنید، محتوای اون بعد از پردازش توی متغیر content$ قرار میگیره و تحویل layout که توی کنترلر مشخص کردین داده میشه. اون layout هم اگه بخواد خروجی خودش رو باز تحویل layout دیگه ای بده، باید با کمک متدهای beginContent و endContent به شکلی که گفتم، اینکار رو انجام بده.