0
我正在編寫一個自動加載資產的視圖助手。我希望它自動加載所有不是子頁面的頁面的sub.css。我將如何去做這件事?Zend確定它是否是視圖助手中的首頁(或默認頁面)
這是我已經得到了迄今:
class Zend_View_Helper_CssHelper extends Zend_View_Helper_Abstract {
/**
* protected $this->isFront()
*
*/
public function isFront($request='') {
// Create $request from Zend Controller
if (!isset($request))
$request = Zend_Controller_Front::getInstance()->getRequest();
// If request not set
if (!empty($request)) {
// Hard code front page condition
// @TODO provide more sophisticated way to determine front page
if ($request->module == 'default' && $request->controller == 'page' && $request->action == 'index') return true;
else return false;
}
}
public function cssHelper($return=false) {
// Set folder prefix
$prefix = '/myprefixpath/assets/css/';
$file_prefix = '/public/assets/css/';
$request = Zend_Controller_Front::getInstance()->getRequest();
// Css autoloading pattern {controller}/{action}
// create $part_uri workaround because of the shitty routing path
$part_uri = ASSETS_URL . '/css/' . $request->getControllerName() . '/' . $request->getActionName() . '.css';
$file_uri = ROOT_DIR . $file_prefix . $request->getControllerName() . '/' . $request->getActionName() . '.css';
//$file_uri = APPLICATION_PATH . $request->getControllerName() . '/' . $request->getActionName() . '.css';
//Zend_Debug::Dump($file_uri);
//Zend_Debug::Dump(file_exists($file_uri));
if ($return == true) {
return $part_uri;
}
/**
* Autoload my sub.css file if it's the front page
*/
var_dump($this->isFront());
if ($this->isFront() == false) {
//var_dump(ASSETS_URL . '/sub.css');
//$this->view->headLink()->appendStylesheet(ASSETS_URL . '/css/page/sub.css');
}
// Find out if the file exists
if (file_exists($file_uri)) {
// Workaround due to my local alias
// @TODO need to test on dev server
// $this->view->headStyle()->appendStyle(file_get_contents($file_uri));
$this->view->headLink()->appendStylesheet($part_uri);
// If there isn't load the error.css file
} else {
if (file_exists(ASSETS_URL . 'error.css'))
$this->view->headScript()->appendFile('/' . 'error.css');
}
return $this->view->headLink();
}
}
大。這似乎是我在找什麼。我如何將這些值從控制器傳遞給我的視圖助手?原諒我的無知,我在這個領域的複雜程度是有限的。 – chrisjlee
從上面的代碼示例中,您嘗試創建視圖助手。我認爲你已經在把這些值加入到視圖中了,因爲'ViewHelpers'基本上是視圖的一部分 – burntblark
好吧,我明白你現在要求的是什麼...請參閱上面給出的** Sample Usage ** – burntblark