Laravel 5.7: Аргумент 1 передан - PullRequest
       37

Laravel 5.7: Аргумент 1 передан

0 голосов
/ 22 октября 2018

Я реализовал maatwebiste (экспорт в Excel) и пытаюсь улучшить его, когда администратор может выбрать «От даты:» до «До даты:» для экспорта.

Когда я отправляю форму, я сталкиваюсь с ошибкой "Argument 1 passed to App\Exports\PostExport::to_date() must be an instance of App\Exports\date, string given, called in "

ПРИМЕЧАНИЕ: я использовал var_dump, чтобы проверить, имеет ли она значение

Вопрос: Как мне передать моюзначения в моем файле PostExport? (мой экспорт в файл Excel)

Просмотр

<form action="{{ route('export.excel') }}" method="POST" enctype="multipart/form-data">
    @csrf
    <div class="form-group">
        <div class="row">
            <div class="col-xs-3">
                <p>To: <input type="text" id="to_datepicker" name="to_datepicker"></p>
                <p>From: <input type="text" id="from_datepicker" name="from_datepicker"></p>
                <button type="submit" class="btn btn-primary ">Export</button>
            </div>
        </div>
    </div>
</form>

Контроллер

<code>public function excel(Request $request)
    {
        $to_datepicker = $request->to_datepicker;
        $from_datepicker = $request->from_datepicker;
        echo "<pre>";
            var_dump($to_datepicker);
            var_dump($from_datepicker);
        echo "
";// die; // Excel :: create ('Filename', function ($ excel) {// // Вызов здесь методов записи // Excel :: selectSheets ('title') -> load (); //}); return (новый PostExport) -> to_date ($ to_datepicker) -> from_date ($ from_datepicker) -> загрузка ('invoices.xlsx');}

PostExport

<?php

namespace App\Exports;

use App\Post;
use Illuminate\Contracts\Support\Responsable;
use Maatwebsite\Excel\Concerns\FromQuery;
// use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\Exportable;

class PostExport implements FromQuery, Responsable
{
    use Exportable;
    /**
    * @return \Illuminate\Support\Collection
    */
    // private $fileName = 'invoices.xlsx';

    public function to_date(date $to)
    {
        $this->to = $to;

        return $this;

    }
    public function from_date(date $from)
    {
        $this->from = $from;

        return $this;
    }


    public function query()
    {
        // return Post::query()->whereYear('created_at', $this->year)
        //                    ->orWhere('created_at',$this->month);

        return Post::query()->whereBetween('created_at',[$this->to,$this->from]);
    }
    // public function collection()
    // {

    //     return Post::all();
    // }
}

1 Ответ

0 голосов
/ 22 октября 2018

Проблема в этой строке:

public function to_date(date $to)

Что здесь date?По умолчанию в PHP нет класса date.В этом случае, вероятно, вы хотите полностью удалить date или заменить на string:

public function to_date(string $to)
...