Визуализация частичного из задачи в Symfony 1.4
Я пытаюсь сделать частичное в задании Symfony, и мне не везет. Я нашел документы в 1.1, которые говорят, чтобы просто позвонить get_partial()
но, видимо, это больше не доступно в 1.4. Я попытался загрузить помощник вручную sfLoader::getHelpers('Partial');
но я получаю "Класс sfLoader не найден". Любая помощь будет принята с благодарностью.
Для справки я пытаюсь создать HTML-файл с именем header.html из моего глобального заголовка, частично используемого во всех моих макетах для включения в сторонний форум, который я интегрирую (Simple Machines/SMF).
6 ответов
Первая загрузка:
sfContext::getInstance()->getConfiguration()->loadHelpers('Partial');
тогда просто позвоните:
get_partial()
Это сделает свое дело:
//load the Partial helper to be able to use get_partial()
$contextInstance = sfContext::createInstance($this->configuration);
$contextInstance->getConfiguration()->loadHelpers('Partial');
Не забудьте добавить имя приложения в настройках вашей задачи. Посмотрите на эту строку:
new sfCommandOption('application', null, sfCommandOption::PARAMETER_REQUIRED,'The application name', 'frontend')
Сейчас $this->configuration
возвращает sfApplicationConfiguration
что тебе нужно
Просто вызвал частичное в задаче для использования при отправке бесплатной пробной электронной почты, вот код:
//combines the partial with passed variables and puts the results in a string variable
$contextInstance = sfContext::createInstance($this->configuration);
$contextInstance->getConfiguration()->loadHelpers('Partial');
$partial_in_a_string = $contextInstance->getController()
->getAction('module_name', 'action_name')
->getPartial('module_name/partial_name', array('var_name'=>'var_value'));
sfLoader
устарел в Symfony 1.2 - я думаю, что вам нужно просмотреть API 1.4 и справку по обновлению с любой версии, с которой вы знакомы, поскольку это будут ресурсы, на которые вам нужно будет ссылаться.
Хитрость в решении вашей проблемы - загрузить помощника loadHelpers()
метод, предоставленный sfApplicationConfiguration
класс - ваша задача должна подключить этот метод в своем configure()
метод. Я не делал этого раньше себя, ум...
Убедитесь, что в вашем методе настройки есть опция приложения:
protected function configure()
{
$this->addOptions(array(
new sfCommandOption('application', null, sfCommandOption::PARAMETER_REQUIRED, 'The application name', 'frontend')
))
....
А затем в методе execute:
protected function execute($arguments = array(), $options = array())
{
sfContext::createInstance($this->configuration)->getConfiguration()->loadHelpers('Partial');
Таким образом вы предотвратите следующие ошибки:
Контекст "по умолчанию" не существует.
а также
Аргумент 1, переданный в sfContext::createInstance(), должен быть экземпляром sfApplicationConfiguration
Вы можете получить доступ к текущей конфигурации с
$this->configuration
Вы также можете определить опцию команды приложения в методе taskClass::configure() (если вы использовали symfony generate:task для генерации класса задачи, у вас должен быть интерфейс в качестве опции приложения по умолчанию). При желании вы можете передать приложение, используя --application=appName из cli при вызове вашей задачи.