bestxp
@bestxp

Eloquent ORM и Twig ошибка, кто сталкивался?

Использую в Silex Elouqent + Twig и после получения записи из бд например Post::findOrNew(100);

и попытке вывести данные {{ post.status }} получаю проблему ниже, кто и как боролся с такой лажей?

An exception has been thrown during the rendering of a template ("Call to undefined method Illuminate\Database\Query\Builder::status()") in "@incidents/view.html.twig"


очень странное поведение composer.json

"twig/twig": "~1.23",
"ziadoz/silex-capsule": "1.*", -- сервис провайдер для Eloquent и Capsule/Manager

если пройтись глубже то версии Eloquent если смотреть по silex-capsule
"illuminate/database": "~5.0",
"illuminate/events": "~5.0"

может стоит где-то что-то дописать или донастроить для twig или Eloquent, но пока проблема остается
так же что самое интересное решения не находил для связки Eloquent + Twig
  • Вопрос задан
  • 196 просмотров
Решения вопроса 1
bestxp
@bestxp Автор вопроса
Да бывает пару дней убьешь на поиски, а потом ларчик открывается просто

нужно переопрделить базовый класс для шаблонов и там переопределить метод

/**
     * {@inheritdoc}
     */
    protected function getAttribute(
        $object,
        $item,
        array $arguments = [],
        $type = Twig_Template::ANY_CALL,
        $isDefinedTest = false,
        $ignoreStrictCheck = false
    )
    {
        // We need to handle accessing attributes on an Eloquent instance differently
        if (Twig_Template::METHOD_CALL !== $type and is_a($object, 'Illuminate\Database\Eloquent\Model')) {
            // We can't easily find out if an attribute actually exists, so return true
            if ($isDefinedTest) {
                return true;
            }



            // Call the attribute, the Model object does the rest of the magic
            return $object->$item;
        } else {
            return parent::getAttribute($object, $item, $arguments, $type, $isDefinedTest, $ignoreStrictCheck);
        }
    }


подглядел twig bridge for laravel
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы