Обычно я использую Zend Framework, но этого мне не хватает в Lithium. Частицы. В представлении есть метод рендеринга, в котором вы можете использовать «элементы», которые мне ближе всего.
_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, а не по указанному мной пути.
Я что-то делаю не так?