Плагин OctoberCMS Responsiv Uploader, файлы имеют нулевые значения

Я использую плагин для загрузки файлов в формате PDF. Я следил за документацией, реализующей ее для компонентов в функции инициализации. это мой следующий код

    public function init(){
    $tripFiles = $this->addComponent(
        'Responsiv\Uploader\Components\FileUploader',
        'tripFiles',
        [
            'fileTypes'             => '.jpg, .jpeg, .png, .pdf, .doc, .docx, .xls, .xlsx, .ppt, .pptx',
            'placeholderText'       => "Drag and drop file here or Browse File",
        ],
        ['deferredBinding'       => true]
    );
    $tripFiles->bindModel('files', ($this->property('tripId') ? Trip::find((int)$this->property('tripId')) : new Trip));
}


public function onSave(){
   $data = post();
    var_dump($data);
    $vacation = new Trip;
    $vacation->fill($data);
    $vacation->save(null, post('_session_key'));
}

но я нашел вывод с нулевым значением в массиве _uploader в файлах.

array:10 [▼
  "_handler" => "onCreateXXX"
  "_session_key" => "XXXXXXXXXX"
  "_token" => "XXXXXXXXXX"
  "name" => "XXXXX"
  "destination_name" => "XXXX"
  "purpose_id" => "1"
  "purpose" => ""
  "charge_code" => "XXXX"
  "city_id" => "1"
  "_uploader" => array:1 [▼
    "files" => ""
  ]
]

Внешний интерфейс

{{ form_ajax('onSave')}}
   {% component 'tripFiles' %}
  <button type="submit" class="btn btn-primary w-90"> Create Trip </button>
{{ form_close() }}

так кто-нибудь может помочь мне с этой проблемой ??


person Thareeq Arsyad    schedule 23.05.2020    source источник
comment
не могли бы вы поделиться дополнительной информацией о том, как вы показываете компонент на стороне внешнего интерфейса и где (расположение кода) вы сбрасываете массив.   -  person Hardik Satasiya    schedule 28.05.2020
comment
уже разместил мой компонент во фронте   -  person Thareeq Arsyad    schedule 31.05.2020
comment
вы также можете указать, в каком месте вы пытаетесь отладить, что означает дамп этих данных array:10   -  person Hardik Satasiya    schedule 01.06.2020
comment
просто var_dump(post()); в функции   -  person Thareeq Arsyad    schedule 01.06.2020
comment
да, но не могли бы вы поделиться, где вы это добавляете :)   -  person Hardik Satasiya    schedule 01.06.2020
comment
ну просто добавил свою функцию onSave   -  person Thareeq Arsyad    schedule 01.06.2020


Ответы (1)


Здесь проблема в том, что есть 2 модели, и да, вы не сможете увидеть данные файла в post, я думаю.

  1. который используется в init либо новом, либо на основе tripId
  2. которая снова является новой моделью в onSave, так или иначе не связанной с моделью, которая привязана к виджету в методе init.

Вам нужно убедиться, что same model используется в both case, поэтому можно создать одну переменную, которая может содержать модель, и использовать ее в обоих сценариях.

public $vacationModel = null;

public function init() {
    $tripFiles = $this->addComponent(
        'Responsiv\Uploader\Components\FileUploader',
        'tripFiles',
        [
            'fileTypes'             => '.jpg, .jpeg, .png, .pdf, .doc, .docx, .xls, .xlsx, .ppt, .pptx',
            'placeholderText'       => "Drag and drop file here or Browse File",
        ],
        ['deferredBinding'       => true]
    );
    $this->vacationModel = $this->property('tripId') 
          ? Trip::find((int)$this->property('tripId')) 
          : new Trip;
    $tripFiles->bindModel('files', $this->vacationModel);

}

public function onSave() {
    $data = post();
    $this->vacationModel->fill($data);
    $this->vacationModel->save(null, post('_session_key'));   
}

Это должно решить вашу проблему.

если есть сомнения, пожалуйста, прокомментируйте.

person Hardik Satasiya    schedule 01.06.2020