Allows custom options to be specified via form fields
This commit is contained in:
parent
8a4ac533e5
commit
5be21f6231
|
|
@ -1,6 +1,7 @@
|
|||
<?php namespace Backend\Behaviors;
|
||||
|
||||
use Str;
|
||||
use Lang;
|
||||
use Backend\Classes\ControllerBehavior;
|
||||
use League\Csv\Writer as CsvWriter;
|
||||
use League\Csv\Reader as CsvReader;
|
||||
|
|
@ -42,6 +43,11 @@ class ImportExportController extends ControllerBehavior
|
|||
*/
|
||||
protected $importUploadFormWidget;
|
||||
|
||||
/**
|
||||
* @var Backend\Classes\WidgetBase Reference to the widget used for specifing import options.
|
||||
*/
|
||||
protected $importOptionsFormWidget;
|
||||
|
||||
/**
|
||||
* Behavior constructor
|
||||
* @param Backend\Classes\Controller $controller
|
||||
|
|
@ -59,11 +65,16 @@ class ImportExportController extends ControllerBehavior
|
|||
$this->config = $this->makeConfig($controller->importExportConfig, $this->requiredConfig);
|
||||
|
||||
/*
|
||||
* Import form widget
|
||||
* Import form widgets
|
||||
*/
|
||||
if ($this->importUploadFormWidget = $this->makeImportUploadFormWidget()) {
|
||||
$this->importUploadFormWidget->bindToController();
|
||||
}
|
||||
|
||||
if ($this->importOptionsFormWidget = $this->makeImportOptionsFormWidget()) {
|
||||
$this->importOptionsFormWidget->bindToController();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//
|
||||
|
|
@ -72,6 +83,9 @@ class ImportExportController extends ControllerBehavior
|
|||
|
||||
public function import()
|
||||
{
|
||||
$this->controller->pageTitle = $this->controller->pageTitle
|
||||
?: Lang::get($this->getConfig('import[title]', 'Import records'));
|
||||
|
||||
$this->prepareVars();
|
||||
}
|
||||
|
||||
|
|
@ -91,6 +105,10 @@ class ImportExportController extends ControllerBehavior
|
|||
$matches = post('column_match', []);
|
||||
$sessionKey = $this->importUploadFormWidget->getSessionKey();
|
||||
|
||||
if ($optionData = post('ImportOptions')) {
|
||||
$model->fill($optionData);
|
||||
}
|
||||
|
||||
$model->importDataFromColumnMatch($matches, $sessionKey, [
|
||||
'firstRowTitles' => post('first_row_titles', false)
|
||||
]);
|
||||
|
|
@ -134,7 +152,7 @@ class ImportExportController extends ControllerBehavior
|
|||
$reader->setOffset(1);
|
||||
}
|
||||
|
||||
$data = $reader->setLimit(20)->fetchColumn((int) $columnId);
|
||||
$data = $reader->setLimit(50)->fetchColumn((int) $columnId);
|
||||
|
||||
/*
|
||||
* Clean up data
|
||||
|
|
@ -163,6 +181,7 @@ class ImportExportController extends ControllerBehavior
|
|||
public function prepareVars()
|
||||
{
|
||||
$this->vars['importUploadFormWidget'] = $this->importUploadFormWidget;
|
||||
$this->vars['importOptionsFormWidget'] = $this->importOptionsFormWidget;
|
||||
$this->vars['importDbColumns'] = $this->getImportDbColumns();
|
||||
$this->vars['importFileColumns'] = $this->getImportFileColumns();
|
||||
|
||||
|
|
@ -227,6 +246,25 @@ class ImportExportController extends ControllerBehavior
|
|||
return $widget;
|
||||
}
|
||||
|
||||
protected function makeImportOptionsFormWidget()
|
||||
{
|
||||
if ($fieldConfig = $this->getConfig('import[form]')) {
|
||||
$widgetConfig = $this->makeConfig($fieldConfig);
|
||||
$widgetConfig->model = $this->importGetModel();
|
||||
$widgetConfig->alias = 'importOptionsForm';
|
||||
$widgetConfig->arrayName = 'ImportOptions';
|
||||
|
||||
$widget = $this->makeWidget('Backend\Widgets\Form', $widgetConfig);
|
||||
return $widget;
|
||||
}
|
||||
elseif ($this->importUploadFormWidget) {
|
||||
$stepSection = $this->importUploadFormWidget->getField('step3_section');
|
||||
$stepSection->hidden = true;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
protected function getImportFilePath()
|
||||
{
|
||||
return $this
|
||||
|
|
|
|||
|
|
@ -2,4 +2,6 @@
|
|||
|
||||
<?= $importUploadFormWidget->render() ?>
|
||||
|
||||
<?= $importOptionsFormWidget->render() ?>
|
||||
|
||||
</div>
|
||||
Loading…
Reference in New Issue