ZF でカスタム アクション ヘルパーを作成しようとしています。私はドキュメントを読み、グーグルで助けを求めましたが、これを機能させることができません。
Bootstrap.php の関連コードは次のとおりです (これを機能させるために私が試みたすべてを含む):
protected function _initAutoload()
{
$autoLoader=Zend_Loader_Autoloader::getInstance();
$resourceLoader=new Zend_Loader_Autoloader_Resource(array(
'basePath'=>APPLICATION_PATH,
'namespace'=>'',
'resourceTypes'=>array(
'models'=>array(
'path'=>'models/',
'namespace'=>'Model_'
),
'forms'=>array(
'path'=>'forms/',
'namespace'=>'Form_'
),
'helpers'=>array(
'path'->'../library/My/Action/Helpers/',
'namespace'->'My_Action_Helpers_'
),
)
));
$autoLoader->pushAutoloader($resourceLoader);
Zend_Controller_Action_HelperBroker::addHelper(new My_Action_Helpers_Detect());
}
library/My/Action/Helpers/Detect.php でヘルパーを宣言する場所は次のとおりです。
class Detect extends Zend_Controller_Action_Helper_Abstract
{
private $_agents = array('safari', 'msie', 'chrome', 'firefox', 'opera');
public function direct($type) {
$type = strtolower($type);
if(!in_array($type, $this->_agents)) return false;
return substr(strtolower($_SERVER['HTTP_USER_AGENT']), $type);
}
}
(ところで、Zend_Http_UserAgent を使用したほうがよいことはわかっていますが、php.ini ファイルへのアクセス権がありません)
ここで、コントローラーからヘルパーを初期化します。
init()
{
...
//$this->_userAgentHelper = $this->_helper->getHelper('UserAgentDetect');
...
}
これは私が得ているエラーです:
/var/www/html/dev/library/My/Action/Helpers/Detect.php でクラス Detect を再宣言できません
よろしくお願いいたします。