Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Всем привет, нужна помощь по blade в ларавел 5.
Опишу проблему.
Есть переменная, которая берет данные из базы, к примеру $meta['title'].
В нее в базе записано "Лучшие тусовки в".
Есть переменная $city, которая содержит город, к примеру "Москва".
т.е. получаем:
$meta['title'] = "Лучшие тусовки в";
$city = "Москва";
Как сделать чтоб в базе хранилась переменнная $city. т.е. по идее в базу нужно записывать что-то в виде
$meta['title'] = "Лучшие тусовки в $city";
Но ни один из моих способов не работает. В blade переменная выводится через {{ $meta['title'] }}
пробовал записывать в базу:
"Лучшие тусовки в $city"
"Лучшие тусовки в {{ $city }}"
"Лучшие тусовки в <?= $city ?>"
Все эти способы выдают просто текст так же как и записан в базе, а переменная не подставляется. Надеюсь понятно объяснил. Подскажите решение, не хотелось бы использовать велосипедов в виде str_replace перед выводом. Спасибо
Я бы сказал, что у тебя что-то очень серьезно не так в архитектуре приложения. Но если хочется хранить текст с переменной, то храни 'Лучшие тусовки в |city|', например. И после запроса в БД, делай preg_replace(), чтобы заменить переменную на ее значение.
Не в сети
Да задача в принципе стандартная, есть куча всяких сео текстов, в них меняется лишь название города, и чтоб не писать эту кучу текстов для каждого города, придумали такое решение, что тексты будут хранится в одном экземляре, а город подставляться, ну видимо выход один, делать замену по шаблону. Спасибо
Тут вопрос такой - необходимо ли для каждой страницы гибко настраивать 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)
Не в сети
Как работать с титулом
layout/head
<html>
<head>
<title>@yield('title') - основной титул</title>
</head>
<body>
@yield('content')
</body>
</html>
your/page
@extends('layout')
@section('title','дополнение к титулу')
@section('content')
контент твоей страницы
@endsection
Не в сети
Страницы 1