Nano Hash - криптовалюты, майнинг, программирование

Форма Symfony2 - setParameter утверждает, что переменная не определена

У меня есть форма в моем проекте symfony2, где я добавляю новый элемент формы в конструктор:

$builder->add('section', 'entity', array(
            'class' => 'SciForumVersion2Bundle:Section',
            'label' => 'Section',
            'property' => 'name',
            'query_builder' => function(EntityRepository $er) {
                return $er->createQueryBuilder('s')
                ->where('s.conference = conference')
                ->setParameter('conference', $conference);
            },
    ));

И переменная $conference исходит от контроллера, и я устанавливаю эту переменную в FormType:

private $conference;

public function __construct($conference)
{
    $this->conferenceObject = $conference;
}

Но затем я получаю сообщение об ошибке:

ContextErrorException: Notice: Undefined variable: conference in ....

И номер строки указывает на строку:

->setParameter('conference', $conference);

Когда используешь

'query_builder' => function(EntityRepository $er) {
        return $er->createQueryBuilder('s')
        ->where('s.conference = :conference')
        ->setParameter('conference', $this->conference);
    },

Я получаю это сообщение об ошибке:

FatalErrorException: Error: Using $this when not in object context in..

Есть идеи? Спасибо.


Ответы:


1

В вашем FormType __construct() у вас есть ошибка в имени переменной класса для установки:

public function __construct($conference)
{
    $this->conference = $conference;
}

В параметре query_builder используйте переменную класса для значения и префикс имени параметра с префиксом ':' в части DQL:

$conference = $this->conference;
$builder->add('section', 'entity', array(
        'class' => 'SciForumVersion2Bundle:Section',
        'label' => 'Section',
        'property' => 'name',
        'query_builder' => function(EntityRepository $er) use ($conference) {
            return $er->createQueryBuilder('s')
            ->where('s.conference = :conference')
            ->setParameter('conference', $conference);
        },
));
05.03.2014
  • Спасибо, PéCé, но в этом случае я получаю использование $this, когда не в контексте объекта в... 05.03.2014
  • @Milos: Это ожидаемо. Вам нужна переменная use, чтобы передать ее query_builder. РЕДАКТИРОВАТЬ: А, @PéCé уже отредактировал ответ;) 05.03.2014
  • @Milos Я отредактировал свой пост, вы должны передать переменную анонимной функции. 05.03.2014
  • @jperovic, вы правы, спасибо за участие. 05.03.2014

  • 2

    Я думаю, что эта строка выдает ошибку

    ->where('s.conference = $conference')
    

    я был бы таким

    ->where('s.conference = conference')
    
    05.03.2014
  • Спасибо за ответ. На самом деле, это был тип, когда я создавал заявку, извините за это, но даже изменение этого не решает проблему. 05.03.2014
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..