[英]Yii extending the Controller function
我需要做的是擴展getPageTitle()
函數,以便翻譯標題並交換action
和controller
這是我放置在Controller.php中的函數
private $_pageTitle;
public function getPageTitle()
{
if($this->_pageTitle!==null) {
return Yii::t('wm', $this->_pageTitle);
} else {
$controller = Yii::t('wm', ucfirst(basename($this->getId())));
if($this->getAction()!==null && strcasecmp($this->getAction()->getId(),$this->defaultAction)) {
$action = Yii::t('wm', ucfirst($this->getAction()->getId()));
return $this->_pageTitle=Yii::app()->name.' - '.Yii::t('wm', '{action} {controller}', array('{action}' => $action, '{controller}' => $controller));
} else {
return $this->_pageTitle=Yii::app()->name.' - '.$controller;
}
}
}
從此處引用: http : //www.yiiframework.com/forum/index.php/topic/22258-internationalisationtranslation-of-page-title/
但是,如果在視圖中我使用以下任何一種設置新的自定義標題
$this->pageTitle = 'Title';
$this->setPageTitle('Title2');
Yii::app()->getController()->pageTitle="Title3";
標題不變
如果我檢查parent::getPageTitle()
它總是返回值
如果我檢查$this->_pageTitle
它總是返回null
private
變量只能在創建它們的類(在您的情況下為Controller
。
您應該改用protected
因為這些變量在從聲明它的類繼承的所有類中也可以訪問。
有關更多信息: https : //stackoverflow.com/a/4361582/428543和http://php.net/manual/zh/language.oop5.visibility.php
我認為這不是私有問題,因為私有屬性僅在此類中被引用。 我認為您假設將pageTitle引用為Controller屬性時將調用getPageTitle()。 但這僅在模型/活動記錄中適用。
這個“如果外部代碼引用propertyName並且不能公開訪問,則調用名為get + PrivatePropertyName的函數”不是PHP功能,並且我認為它在Controller中不是自動的。 您必須編寫自己的__get()訪問器才能自動調用此函數。
(在您引用的鏈接中,我只看到了顯式調用getter和setter的示例。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.