Я работаю над API Symfony2, чтобы просто изучить материал. Я пытаюсь достичь этого:Symfony2 населяющий объект с результатами Doctrine
Загрузить шаблоны из базы данных. Теперь я пытаюсь вывести извлеченные шаблоны из моей базы данных в браузере, и именно здесь я боюсь.
Итак, моя Доктрина работает и возвращает шаблоны, я также создал TemplateResponse, где я хочу заполнить каждую переменную construc массивом Doctrine array => value.
TemplateResponse файл:
<?php
namespace Boltmail\UserBundle\BoltmailResponse;
class TemplateResponse {
/**
* @var integer
*/
public $templates;
/**
* @param $templates
*/
public function __construct(
$templates
){
$this->templates = $templates;
}
}
TemplateListFactory:
<?php
namespace Boltmail\UserBundle\BoltmailFactory;
use Boltmail\UserBundle\BoltmailRepository\TemplateListRepository;
use Boltmail\UserBundle\BoltmailResponse\TemplateResponse;
use Boltmail\UserBundle\BoltmailResponse\Response;
use Symfony\Component\HttpFoundation\Request;
class TemplateListFactory {
public $template;
public function __construct(
TemplateListRepository $templateListRepository
){
$this->template = $templateListRepository;
}
public function build()
{
$template = $this->template->searchTemplate();
if ($template) {
return new TemplateResponse (
$template
);
} else {
return new Response(
false,
'Something went wrong'
);
}
}
}
Ошибка:
Notice: Trying to get property of non-object
if ($template) {
return new TemplateResponse (
$template->temp_id,
$template->title,
$template->content,
$template->author
Так что я считаю, Doctrine возвращает данные в виде массива, я думаю, и я пытаюсь получить доступ его значения, как если бы они были объектами, поэтому я получаю эту ошибку.
Я также попытался использовать цикл foreach внутри инструкции If перед заполнением TemplateReponse, но это также не сработало. Любая идея, как я могу сделать эту работу.
ОК Я сделал некоторые изменения, и я получил результат я был после:
Результат:
{
templates: [
{
temp_id: "0",
title: "New Template",
content: "I am new template blehhhhhh",
author: "Michael"
},
{
temp_id: "1",
title: "Liverpool Template",
content: "You Will Never Walk Alone",
author: "Bob"
}
]
}
Не могли бы вы предоставить реализацию searchTemplate? – DonCallisto
, пожалуйста, проверьте выше изменения. – John
Используйте некоторую функцию ведения журнала для выполнения отладки. Я полагаю, что вы не выполняете правильный запрос, и ваше возвращаемое значение равно null или его форме. Попробуйте использовать get_class (шаблон $ this->); Доктрина BTW поможет вам без повторного изобретательства колеса ... Если вы вызовете метод с нулевым параметром, это должно вызвать исключение – DonCallisto