سؤال

لذا كان السؤال على الهيئة العامة من رمز الإطار زند فيما يتعلق تخطيط.

تخطيط بلدي هو في الأساس هذا:

(LAYOUT.PHTML)

<div id='header'>
<?= $this->Layout()->header ?>
</div>

<div id='main'>
<?= $this->Layout()->main ?>
</div>

<div id='footer'>
<?= $this->Layout()->footer ?>
</div>

وهلم جرا وهكذا دواليك.الآن, من أجل الحفاظ على قانون بلدي في بلدي رأس منفصل عن قانون بلدي الرئيسية و رمز من تذييل, لقد قمت بإنشاء مجلد وجهة نظري أن يحمل رأس.phtml الرئيسية.phtml ، تذييل.phtml.ثم استخدام هذا الرمز إلى تعيين المحتوى من رأس.phtml إلى $this->تخطيط()->رأس:

(INDEX.PHTML)

$this->Layout()->header = file_get_contents('index/header.phtml');
$this->Layout()->main = file_get_contents('index/main.phtml');
$this->Layout()->footer = file_get_contents('index/footer.phtml');

كان هذا عمل عظيم, ولكن لقد ضرب نقطة حيث لا أريد الرئيسية لتكون HTML ثابتة بعد الآن.وأود أن تكون قادرة على إدراج بعض القيم مع PHP.حتى في بلدي تحكم في indexAction أريد أن تكون قادرا على تحميل من قاعدة البيانات ووضع القيم إلى مؤشر/الرئيسية.phtml.هل هناك طريقة للقيام بذلك دون إعادة هيكلة موقعي ؟

إذا ليس هناك طريقة للقيام بذلك حتى أنه يمكن أن يكون:

  1. القدرة على وضع التعليمات البرمجية إلى أقسام مختلفة من التخطيط ، مثل تخطيط()->رأس تخطيط->تذييل الصفحة.

  2. فصل هذه القطع في ملفات مختلفة ، حتى انهم من السهل العثور على تنظيم مثل مؤشر/تذييل الصفحة.phtml ، مؤشر/الرئيسية.phtml.... الخ

  3. لا يجب أن نضع هذا الرمز إلى ونقلت داع إلى تحويلها إلى سلسلة لتمريرها إلى تخطيط()->رأس الخ.

شكرا جزيلا لكم على مساعدتكم.

-إيثان

هل كانت مفيدة؟

المحلول

هنا هو فكرة:

  • تعيين تخطيط()->رأس اسم الملف بدلا من المحتويات.
  • وضع الكود الخاص بك في هذا الملف
  • في تخطيط الملف ، وتشمل() أو تتطلب() تخطيط->رأس().

منذ تخطيط رؤوس/تذييلات تحليل الآن ، يمكنك استخدامها تماما مثل طريقة عرض.

نصائح أخرى

على ->header في $this->layout()->header هو رد الجزء.يمكنك أن تجعل أجزاء من رد باستخدام $this->_helper->viewRenderer->setResponseSegment('header'); في هذا العمل.

إذا كنت تستخدم

$this->layout()->header = $this->render('index/header.phtml');

فإنه سيتم استخدام طريقة العرض ، وبالتالي الحفاظ على كل ما تبذلونه من المتغيرات المحددة عند تقديم الرأس.

أود أن أقترح استخدام شيء من هذا القبيل

<?php echo ($header = $this->layout()->header)? 
      $header : $this->render('headerDefault.phtml'); ?>

في ملف layout الخاص بك -- أنها سوف تجعل رأس الافتراضي من تخطيط المجلد إذا كان عرض البرنامج النصي لا تجاوز ذلك.

هل حاولت ان تبحث في عرض المساعدين.فهي وسيلة هيكلة عرض منطق في القابل لإعادة الاستخدام وحدات البرمجية.في هذه الحالة يمكنك استخدام طريقة عرض المساعد لتوليد كل المطلوب شرائح.ذلك المثال الخاص بك عرض السيناريو من شأنه أن تبدو وكأنها

$this->Layout()->header = $this->header();
$this->Layout()->main = $this->main();
$this->Layout()->footer = $this->footer();

الفائدة من استخدام عرض المساعدين على أن تشمل وتتطلب البيانات هو أن جميع من التعامل مع الملف و اسم القرار هو التعامل معها من قبل الإطار.على دليل مزيد من المعلومات حول كيفية إعداد مسارات أمثلة الاستخدام.... الخ

المساعدين جيدة.وثمة خيار آخر هو مثل ما ورد أعلاه ، ووضع أسماء في رأس/تذييل الصفحة - وضع أسماء القالب واستخدام $this->render($this->layout()->header)), الخ الخ.هذا هو مجرد مثل هذه تتطلب أعلاه ، ولكن أكثر اتساقا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top