Экспорт PDF из Laravel

Я пытаюсь экспортировать таблицу в PDF, но у меня есть foreach, и я хочу экспортировать все данные из foreach, но не работает для всех, только для строки.

Вот код:

foreach ($posts as $post) {
    $html = '<div class="table-scrollable">
                    <table id="posts" class="table table-bordered table-hover">
                        <thead>
                            <tr>
                                <th>Id</th>
                                <th>Name</th>
                                <th>Title</th>
                            </tr>
                        </thead>
                        <tbody id="body"><tr>
                            <td>'
            . $post->id . ' 
                            </td>
                            <td>' .
            $post->name .
            '</td>
                            <td>'
            . $post->title .
            '</td> 
                </tr>
               </tbody>
            </table>
        </div>';
}
return PDF::load($html, 'A4', 'portrait')->download('my_pdf');

person Sulde1985    schedule 22.11.2016    source источник
comment
В каждой итерации вы перезаписываете $html. Вы, вероятно, хотите добавить к нему, не так ли?   -  person Jonnix    schedule 22.11.2016
comment
Да.. но я не знаю как.   -  person Sulde1985    schedule 22.11.2016
comment
Прочтите о строковых операторах на странице php.net/manual/en/language.operators. .string.php   -  person Jonnix    schedule 22.11.2016
comment
@ Sulde1985 используйте $html .= '... вместо $html = '...   -  person Alexey Mezenin    schedule 22.11.2016
comment
@AlexeyMezenin, если я использую $html с точкой. Я получаю эту ошибку Неопределенная переменная: html   -  person Sulde1985    schedule 22.11.2016
comment
@Sulde1985 просто создайте его до foreach() с $html = '';   -  person Alexey Mezenin    schedule 22.11.2016
comment
@AlexeyMezenin после этого я получаю Страница localhost не работает   -  person Sulde1985    schedule 22.11.2016


Ответы (1)


Внутри конструкции foreach вы переопределяете свою переменную $html, вам нужно инициализировать $html перед foreach и добавить в конец строки свой html, используя назначение конкатенации .=

$html = '';
foreach ($posts as $post) {
        $html .= '<div class="table-scrollable">
                        <table id="posts" class="table table-bordered table-hover">
                            <thead>
                                <tr>
                                    <th>Id</th>
                                    <th>Name</th>
                                    <th>Title</th>
                                </tr>
                            </thead>
                            <tbody id="body"><tr>
                                <td>'
                . $post->id . ' 
                                </td>
                                <td>' .
                $post->name .
                '</td>
                                <td>'
                . $post->title .
                '</td> 
                    </tr>
                   </tbody>
                </table>
            </div>';
}
return PDF::load($html, 'A4', 'portrait')->download('my_pdf');
person esperant    schedule 22.11.2016
comment
Спасибо за ответ, но это то, что я делаю, и я получаю эту ошибку. Страница localhost не работает. localhost в настоящее время не может обработать этот запрос. - person Sulde1985; 22.11.2016
comment
У меня слишком много данных, в этом была проблема, но решение хорошее. Спасибо всем за помощь. - person Sulde1985; 22.11.2016