Zend Framework 1.0でSmarty追記

Zend Framework 1.0でSmartyを使用する

Smarty用のView_Helperですが、getScriptPathsがArrayを返すようにしないと、エラーが出てしまいますね。

[php]
/**
* 現在のテンプレートディレクトリを取得します
*
* @return string
*/
public function getScriptPaths()
{
return $this->_smarty->template_dir;
}
[/php]

これを、

[php]
/**
* 現在のテンプレートディレクトリを取得します
*
* @return array
*/
public function getScriptPaths()
{
return array($this->_smarty->template_dir);
}
[/php]

Arrayを返すように変更しておきましょう。

ソースを追ってみると、Zend_Controller_Action_Helper_ViewRendererのinit_view()メソッドで、getScriptPaths()を呼び出してます。
[php]
// Determine if this path has already been registered
$currentPaths = $this->view->getScriptPaths();
$path = str_replace(array(‘/’, ‘\\’), DIRECTORY_SEPARATOR, $path);
$pathExists = false;
foreach ($currentPaths as $tmpPath) {
if (strstr($tmpPath, $path)) {
$pathExists = true;
break;
}
}
if (!$pathExists) {
$this->view->addBasePath($path, $prefix);
}

[/php]

foreachに使うのでArrayじゃないと駄目みたいです。まあメソッド名が、getScriptPathsですし。Zend Frameworkでは、templateディレクトリを配列で複数管理することができるのですね。