通常我使用Zend框架,在Lithium中我想念的是部分视图。在视图中有一个渲染方法,您可以使用“元素”来代替部分视图,这是我找到的最接近的方法。
<?php $this->_render('element', 'form); ?>
这确实可行,但需要将form.html.php文件放在/views/elements文件夹中。是否可以让它搜索另一个路径?比如/views/users/,这样它就可以获取/views/users/form.html.php文件。
我尝试了以下方法,因为我发现render方法接受options参数,您可以在其中指定路径。所以我创建了一个Helper来解决这个问题。
namespace app\extensions\helper;
use lithium\template\TemplateException;
class Partial extends \lithium\template\Helper
{
public function render($name, $folder = 'elements', $data = array())
{
$path = LITHIUM_APP_PATH . '/views/' . $folder;
$options['paths']['element'] = '{:library}/views/' . $folder . '/{:template}.{:type}.php';
return $this->_context->view()->render(
array('element' => $name),
$data,
$options
);
}
}
然而,它仍然只在/view/elements文件夹中搜索,而不是我指定的路径。我做错了什么吗?