سؤال

أريد أن أجعل الأمر سهلاً قدر الإمكان على مصممينا لتوطين السلاسل في طرق العرض، مما يعني أنني أريد القيام بذلك:

...
<p><?php echo $this->_("Hello, world!"); ?></p>
...

يعد تدوين الشرطة السفلية هنا ضروريًا للسماح لـ Poedit باستخراج جميع السلاسل تلقائيًا للترجمة.التنفيذ تافه:

public function _($string)
{
    return Zend_Registry::get('Zend_Translate')->_($string);
}

في هذه اللحظة، لقد وضعت هذا مباشرة Zend_View_Abstract, ، وهو أمر سيئ (لا أريد القيام بذلك عن طريق تعديل أي من مكتبات Zend).ومن الناحية المثالية، إذن، سأقوم بالتمديد Zend_View_Abstract للسماح لي بتنفيذ المهام الملموسة الأخرى التي نطلبها، لكني لا أعرف كيفية إعداد ذلك.قد يكون البديل هو تنفيذ مساعد العرض، ولكن الطريقة الوحيدة التي أعرف بها كيفية القيام بذلك تجعل التعليمات البرمجية الموجودة في العرض أكثر تفصيلاً.أي مؤشرات (لا، ليس من هذا النوع) ستكون محل تقدير كبير.شكرًا!

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

المحلول

من الواضح أن تجاهل مساراتي الخاصة بك ...

  1. يمتد Zend_View
  2. ضع طريقتك في هذه الفئة الموسعة
  3. إنشاء مثيل للفصل (في التمهيد الخاص بك على سبيل المثال)
  4. قم بتعيينه إلى ViewRenderer
  5. قم بتمرير عارض العرض هذا إلى Zend_Controller_Action_HelperBroker's طريقة addHelper
  6. استخدامه في وجهة نظرك

في /library/MegaHAL/Zend/ قم بإنشاء View.php:

class MegaHAL_Zend_View extends Zend_View
{
    public function _($string)
    {
    return Zend_Registry::get('translate')->_($string);
    }
}

في التمهيد الخاص بك:

require_once APPLICATION_PATH.'../library/MegaHAL/Zend/View.php';

$view = new MegaHAL_Zend_View();

$viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer();
$viewRenderer->setView($view);
Zend_Controller_Action_HelperBroker::addHelper($viewRenderer);

في وجهة نظرك:

<p><?php echo $this->_("Hello");?></p>

أعتقد أن هذا سيفعل ما تريد، أليس كذلك؟

نصائح أخرى

وأعتقد أن كنت تبحث عن وسيلة لخلق <لأ href = "http://framework.zend.com/manual/en/zend.view.helpers.html#zend.view.helpers.custom" يختلط = "نوفولو noreferrer"> عرض مخصصة المساعدين .

مثال:

class My_View_Helper extends Zend_View_Helper_Abstract
{
    public function translate($string)
    {
        //...
    }
}

...

$view->setHelperPath('/path/to/helpers', 'My_View_Helper');

...

وبعد ذلك في وجهات النظر الخاصة بك يمكنك استخدامه:

echo $this->translate("Hello, World!");

وعلى الرغم من أنني أعتقد أن استخدام طريقة العرض المساعدين ستكون صحيحة "زند-الإطار" -way للقيام بذلك، يمكنك توسيع Zend_View وتنفيذ جميع الطرق الإضافية التي ترغب في الحصول على - هذه الطريقة التي لا تفقد الميزات من Zend_View.

class My_View extends Zend_View
{
    public function _($string)
    {
        return Zend_Registry::get('Zend_Translate')->_($string);
    }
}

وثم لديك فقط للتأكد من أن لديك فئة طريقة جديدة يتم إنشاء مثيل وتسجيلها وطريقة العرض الافتراضية في في تحكم (وتعيين متغير المثال Zend_Controller_Action::$view إلى مثيل صفك) وفي حياتك <لأ href =" HTTP: //framework.zend كوم / دليل / EN / zend.layout.options.html "يختلط =" نوفولو noreferrer "> Zend_Layout (وعند استخدام تخطيطات، تمرير وجهة نظركم كخيار التكوين مع view مفتاح) في حالة عدم استخدام ViewRenderer أو في و ViewRenderer عند استخدام وViewRenderer باستخدام Zend_Controller_Action_Helper_ViewRenderer::setView().

إذا تم تكوينها بشكل صحيح Poedit يمكن استخراج تلقائيا سلاسل من وظائف أخرى غير _ ().

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