Задача: нужно из контроллера вставить один шаблон view1 в другой view2. При этом оба шаблона - blade (view1.blade.php и view2.blade.php).
Метод контроллера возвращает view2: return view('view2', $extras);
Во view2 есть следующий блок:
@if(!empty($extras))
@section('extras')
{{ $extras}}
@stop
@endif
view1 формируется таким образом:
$view1 = View::make('view1', array('id' => $id));
$extras = $view1 ->render();
Во view1 не просто HTML, там так же ожидаются переменные.
Проблема: на выходе у view1 вместо обычного HTML - сущности:
<div class="layer"></div>
<div class="row custom">
<div class="col-xs-12">
Пробовал:
htmlspecialchars_decode($extras);
e($extras)
{!! $extras !!}
{!! html_entity_decode($extras) !!}
Ничего не помогает, кроме нативной php функции html_entity_decode($extras);
Почему встроенные в Laravel функции в данном случае не решают проблему? Всё-таки они не спроста реализованы и мне кажется я что-то не так делаю.
P.S. Ну и вопрос на засыпку: насколько корректно вообще вставлять один шаблон в другой таким образом? Да, я в курсе что это можно делать из самого blade шаблона, но всё же - вопрос актуальный.
Короче я не въеду что Вы там делаете и почему, но вот такой вариант предлагаю, учитывая, что в $data находится:
<div class="layer"></div>
<div class="row custom"></div>
<div class="col-xs-12"></div>
То в контроллере:
return view('extras', compact('data'));
И во вьюшке тупо:
{!! $data !!}
Зачем у вас там render я ума не приложу вообще
Прошерстил ресурсы западных коллег и пришёл к выводу, что, всё же, View::make()->render()
это нормальная практика: https://stackoverflow.com/questions/29253979/laravel-5-display-html-with-blade (обсуждение по ссылке будет в том числе полезно тем, кто не совсем понимает отличия {{ $var }}
и {!! $var !!}
)
Не зря же разработчики Лары реализовали этот метод.
Моя задача решилась таким образом:
Создаём массив с элементом html который будет содержать в себе рендер blade мини-шаблона, который нужно вставить по тем или иным причинам в главный шаблон:
$layer = array('html' => View::make('layer.detail', array('data' => $data))->render());
И передаём его в возвращаемый контроллером blade шаблон:
return view('page.detail', array('layer' => $layer));
В шаблоне page.detail
в месте, где нужно вставить полученный html, пишем:
{!! html_entity_decode($layer['html']) !!}
Я новичок в Laravel, но для меня решение работает.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Всем привет, я хочу сделать так чтобы можно было редактировать различные записи на странице путём sql запроса R::execИ у меня почему то не хочет...
У меня есть таблиц с данными о фотографии, таблица с списком лайков от различных пользователей ко всем фотографиям и таблица с комментариями...
Есть константа $donate1, которая в итоге выдает STEAM_X:Y:Z, мне надо подсчитать за формулой через PHP Z*2+Y=W и отправить в БД запрос с W, если находит значение-...
lcfirst() не работает для русских символов