通常我使用 Zend 框架,这是我在 Lithium 中错过的东西。部分。视图中有一个渲染方法,您可以在其中使用我得到的最接近的“元素”。
<?php $this->_render('element', 'form); ?>
这确实有效,但是它要求 form.html.php 文件位于 /views/elements 文件夹中。是否可以让它在另一条路径中搜索?与 /views/users/ 一样,它获取文件 /views/users/form.html.php。
我尝试了以下方法,因为我发现渲染方法确实接受一个选项参数,您可以在其中指定一个路径。所以我做了一个助手来为我解决这个问题。
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 文件夹中搜索,而不是在我指定的路径中搜索。
有什么我做错了吗?