excel export works
This commit is contained in:
72
app/Nova/Actions/DownloadExcel.php
Normal file
72
app/Nova/Actions/DownloadExcel.php
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace App\Nova\Actions;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
use Illuminate\Support\Arr;
|
||||||
|
use Maatwebsite\LaravelNovaExcel\Actions\DownloadExcel as BaseDownloadExcel;
|
||||||
|
|
||||||
|
// Fixes Nova 5 incompatibility where field names are PendingTranslation objects instead of strings.
|
||||||
|
final class DownloadExcel extends BaseDownloadExcel
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @param Model|mixed $row
|
||||||
|
*/
|
||||||
|
public function map($row): array
|
||||||
|
{
|
||||||
|
$only = array_map('strval', $this->getOnly());
|
||||||
|
$except = $this->getExcept();
|
||||||
|
|
||||||
|
if ($row instanceof Model) {
|
||||||
|
if (!$this->onlyIndexFields && $except === null && (!is_array($only) || count($only) === 0)) {
|
||||||
|
$except = $row->getHidden();
|
||||||
|
}
|
||||||
|
|
||||||
|
$row->setHidden([]);
|
||||||
|
$row = $this->replaceFieldValuesWhenOnResource($row, $only);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (is_array($only) && count($only) > 0) {
|
||||||
|
$row = Arr::only($row, $only);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (is_array($except) && count($except) > 0) {
|
||||||
|
$row = Arr::except($row, $except);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $row;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function replaceFieldValuesWhenOnResource(Model $model, array $only = []): array
|
||||||
|
{
|
||||||
|
$resource = $this->resolveResource($model);
|
||||||
|
$fields = $this->resourceFields($resource);
|
||||||
|
|
||||||
|
$row = [];
|
||||||
|
foreach ($fields as $field) {
|
||||||
|
if (!$this->isExportableField($field)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (\in_array($field->attribute, $only, true)) {
|
||||||
|
$row[$field->attribute] = $field->value;
|
||||||
|
} elseif (\in_array((string) $field->name, $only, true)) {
|
||||||
|
$row[(string) $field->name] = $field->value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (array_diff($only, array_keys($row)) as $attribute) {
|
||||||
|
if ($model->{$attribute}) {
|
||||||
|
$row[$attribute] = $model->{$attribute};
|
||||||
|
} else {
|
||||||
|
$row[$attribute] = '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$row = array_merge(array_flip($only), $row);
|
||||||
|
|
||||||
|
return $row;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
use Laravel\Nova\Fields\Text;
|
use Laravel\Nova\Fields\Text;
|
||||||
use Laravel\Nova\Fields\Textarea;
|
use Laravel\Nova\Fields\Textarea;
|
||||||
use Laravel\Nova\Http\Requests\NovaRequest;
|
use Laravel\Nova\Http\Requests\NovaRequest;
|
||||||
use Maatwebsite\LaravelNovaExcel\Actions\DownloadExcel;
|
use App\Nova\Actions\DownloadExcel;
|
||||||
|
|
||||||
final class AnswerResource extends Resource
|
final class AnswerResource extends Resource
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
use Laravel\Nova\Fields\Number;
|
use Laravel\Nova\Fields\Number;
|
||||||
use Laravel\Nova\Fields\Text;
|
use Laravel\Nova\Fields\Text;
|
||||||
use Laravel\Nova\Http\Requests\NovaRequest;
|
use Laravel\Nova\Http\Requests\NovaRequest;
|
||||||
use Maatwebsite\LaravelNovaExcel\Actions\DownloadExcel;
|
use App\Nova\Actions\DownloadExcel;
|
||||||
|
|
||||||
final class CategoryResource extends Resource
|
final class CategoryResource extends Resource
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
use Laravel\Nova\Fields\ID;
|
use Laravel\Nova\Fields\ID;
|
||||||
use Laravel\Nova\Fields\Text;
|
use Laravel\Nova\Fields\Text;
|
||||||
use Laravel\Nova\Http\Requests\NovaRequest;
|
use Laravel\Nova\Http\Requests\NovaRequest;
|
||||||
use Maatwebsite\LaravelNovaExcel\Actions\DownloadExcel;
|
use App\Nova\Actions\DownloadExcel;
|
||||||
|
|
||||||
final class LogResource extends Resource
|
final class LogResource extends Resource
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
use Laravel\Nova\Fields\Text;
|
use Laravel\Nova\Fields\Text;
|
||||||
use Laravel\Nova\Fields\Textarea;
|
use Laravel\Nova\Fields\Textarea;
|
||||||
use Laravel\Nova\Http\Requests\NovaRequest;
|
use Laravel\Nova\Http\Requests\NovaRequest;
|
||||||
use Maatwebsite\LaravelNovaExcel\Actions\DownloadExcel;
|
use App\Nova\Actions\DownloadExcel;
|
||||||
|
|
||||||
final class QuestionGroupResource extends Resource
|
final class QuestionGroupResource extends Resource
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
use Laravel\Nova\Fields\Text;
|
use Laravel\Nova\Fields\Text;
|
||||||
use Laravel\Nova\Fields\Textarea;
|
use Laravel\Nova\Fields\Textarea;
|
||||||
use Laravel\Nova\Http\Requests\NovaRequest;
|
use Laravel\Nova\Http\Requests\NovaRequest;
|
||||||
use Maatwebsite\LaravelNovaExcel\Actions\DownloadExcel;
|
use App\Nova\Actions\DownloadExcel;
|
||||||
|
|
||||||
final class QuestionResource extends Resource
|
final class QuestionResource extends Resource
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
use Laravel\Nova\Fields\ID;
|
use Laravel\Nova\Fields\ID;
|
||||||
use Laravel\Nova\Fields\Number;
|
use Laravel\Nova\Fields\Number;
|
||||||
use Laravel\Nova\Http\Requests\NovaRequest;
|
use Laravel\Nova\Http\Requests\NovaRequest;
|
||||||
use Maatwebsite\LaravelNovaExcel\Actions\DownloadExcel;
|
use App\Nova\Actions\DownloadExcel;
|
||||||
|
|
||||||
final class ScreeningResource extends Resource
|
final class ScreeningResource extends Resource
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
use Laravel\Nova\Fields\Select;
|
use Laravel\Nova\Fields\Select;
|
||||||
use Laravel\Nova\Fields\Textarea;
|
use Laravel\Nova\Fields\Textarea;
|
||||||
use Laravel\Nova\Http\Requests\NovaRequest;
|
use Laravel\Nova\Http\Requests\NovaRequest;
|
||||||
use Maatwebsite\LaravelNovaExcel\Actions\DownloadExcel;
|
use App\Nova\Actions\DownloadExcel;
|
||||||
|
|
||||||
final class SessionResource extends Resource
|
final class SessionResource extends Resource
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user