Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 27.11.2016 17:14:50

kirillkuralesin

Переменная из бд в blade

Всем привет, нужна помощь по blade в ларавел 5.
Опишу проблему.
Есть переменная, которая берет данные из базы, к примеру $meta['title'].
В нее в базе записано "Лучшие тусовки в".
Есть переменная $city, которая содержит город, к примеру "Москва".
т.е. получаем:
$meta['title'] = "Лучшие тусовки в";
$city = "Москва";
Как сделать чтоб в базе хранилась переменнная $city. т.е. по идее в базу нужно записывать что-то в виде
$meta['title'] = "Лучшие тусовки в $city";
Но ни один из моих способов не работает. В blade переменная выводится через {{ $meta['title'] }}
пробовал записывать в базу:
"Лучшие тусовки в $city"
"Лучшие тусовки в {{ $city }}"
"Лучшие тусовки в <?= $city ?>"
Все эти способы выдают просто текст так же как и записан в базе, а переменная не подставляется. Надеюсь понятно объяснил. Подскажите решение, не хотелось бы использовать велосипедов в виде str_replace перед выводом. Спасибо

#2 27.11.2016 18:00:51

Re: Переменная из бд в blade

Я бы сказал, что у тебя что-то очень серьезно не так в архитектуре приложения. Но если хочется хранить текст с переменной, то храни 'Лучшие тусовки в |city|', например. И после запроса в БД, делай preg_replace(), чтобы заменить переменную на ее значение.

Не в сети

#3 27.11.2016 18:30:13

kirillkuralesin

Re: Переменная из бд в blade

Да задача в принципе стандартная, есть куча всяких сео текстов, в них меняется лишь название города, и чтоб не писать эту кучу текстов для каждого города, придумали такое решение, что тексты будут хранится в одном экземляре, а город подставляться, ну видимо выход один, делать замену по шаблону. Спасибо

#4 28.11.2016 13:25:50

Re: Переменная из бд в blade

Тут вопрос такой - необходимо ли для каждой страницы гибко настраивать title, чтобы контент менеджер для товара/статьи/что там у вас - фиксировал "шаблон" мета-тега title за страницей. т.е. чтобы была возможность где-то указать "|city| лучший город вселенной", "где-то Тусова в |city|", а где-то ещё какие-то переменные "|city| столица |country|".
Если необходимо - тогда да, придумывать какой-то свой механизм, шаблонизатор.
Если тайтлы строгие - тогда просто где-то в коде конкатинировать переменные, либо в самом блэйде
@section('title')
{{$meta['title']}} {{$city}}
@endsection
соответственно в базовом шаблоне, от которого всё экстендится, сделать <title>@yeld('title')</title>
т.е. даём возможность любому view файлу переопределить title как ему угодно.

Если же переменная $city должна быть глобальной, доступна в любом view файле - это уже городить через ComposerServiceProvider.

Изменено covobo (28.11.2016 13:26:58)

Не в сети

#5 28.11.2016 21:35:12

Re: Переменная из бд в blade

Как работать с титулом

layout/head

<html>
    <head>
        <title>@yield('title') - основной титул</title>
    </head>
    <body>
        @yield('content')
    </body>
</html>

your/page

@extends('layout')
@section('title','дополнение к титулу')
@section('content')
    контент твоей страницы
@endsection

Не в сети

Подвал раздела