Laravel по-русски

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

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

#1 06.07.2017 16:40:41

в Laravel5 вернуть результат обработки вида в качестве параметра json

Всем привет,
Подскажите, в Laravel 5.4.22 хочу вернуть результат  обработки вида в качестве параметра json, вроде:

ob_start();
view('.settings.settings_images', $commonVarsArray );
$html= ob_get_contents();
echo '<pre>$html::'.print_r($html,true).'</pre>'; //СТРОКА ПУСТА
ob_end_clean();
return \Response::json(['html'=>$html, 'settings_sliderImagesList'=>$settings_sliderImagesList, 'rows_count'=>count($settings_sliderImagesList)]);

Но $html пуста... А как правильно?

Спасибо!

Не в сети

#2 06.07.2017 17:49:52

Re: в Laravel5 вернуть результат обработки вида в качестве параметра json

view() не выводит информацию в браузер, а всего лишь создаёт объект класса View. Поэтому буфер пустой. Получить распарсенное содержимое вида можно через метод render().

$html = view('settings.settings_images', $commonVarsArray)->render();
return \Response::json(['html'=>$html, 'settings_sliderImagesList'=>$settings_sliderImagesList, 'rows_count'=>count($settings_sliderImagesList)]);

Изменено Sergant210 (06.07.2017 17:56:42)

Не в сети

#3 06.07.2017 18:01:02

Re: в Laravel5 вернуть результат обработки вида в качестве параметра json

у View есть магический метод __toString(). так что в данном контексте можно сделать просто echo view(…)

ps. а не, невнимательно посмотрел код, в данном контексте ещё проще – $html = (string)view(…). и не надо никаких ob_start()

Изменено constb (06.07.2017 18:02:17)

Не в сети

#4 06.07.2017 19:57:12

Re: в Laravel5 вернуть результат обработки вида в качестве параметра json

Магический метод __toString() вызывает всё тот же метод render() класса View.

Изменено Sergant210 (06.07.2017 19:57:58)

Не в сети

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