Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Всем привет,
Подскажите, в 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 пуста... А как правильно?
Спасибо!
Не в сети
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)
Не в сети
у View есть магический метод __toString(). так что в данном контексте можно сделать просто echo view(…)
ps. а не, невнимательно посмотрел код, в данном контексте ещё проще – $html = (string)view(…). и не надо никаких ob_start()
Изменено constb (06.07.2017 18:02:17)
Не в сети
Магический метод __toString() вызывает всё тот же метод render() класса View.
Изменено Sergant210 (06.07.2017 19:57:58)
Не в сети