Ошибка 500 с редактором таблиц данных с laravel

Я установил таблицы данных с редактором из пакета yajra / laravel-datatables-editor. Я могу получить его там, где таблица данных появляется и работает, но когда я пытаюсь отредактировать поле, оно не обновляется, и я получаю ошибку 500 при вызове ajax с этим сообщением «Ошибка типа: Аргумент 1 передан в App \ DataTables \ DioceseDataTablesEditor: : editRules () должен быть экземпляром Illuminate \ Database \ Eloquent \ Model, задан ноль «

Я следовал руководству пользователя, которое дается с пакетом, просто используя другую таблицу с разными строками. Нужна помощь, потому что я в тупике от того, что мне не хватает.

Вот мой файл DioceseDataTablesEditor.php, в котором происходит ошибка.

namespace App\DataTables;

use App\Diocese;
use Illuminate\Validation\Rule;
use Yajra\DataTables\DataTablesEditor;
use Illuminate\Database\Eloquent\Model;

class DioceseDataTablesEditor extends DataTablesEditor
{
protected $model = Diocese::class;

/**
* Get create action validation rules.
*
* @return array
*/
public function createRules()
{
return [
//'diocese' => 'required',
];
}

/**
* Get edit action validation rules.
*
* @param Model $model
* @return array
*/
public function editRules(Model $model) //This is where the error occurs
{
return [
// 'diocese'  => 'sometimes|required',
];
}

/**
* Get remove action validation rules.
*
* @param Model $model
* @return array
*/
public function removeRules(Model $model)
{
return [];
}

/**
* Pre-update action event hook.
*
* @param Model $model
* @return array
*/
public function updating(Model $model, array $data)
{
return $data;
}
}

Я обращаю внимание на то, что при вызове ajax он никогда не отправляет уникальный идентификатор строки, представляющий собой столбец с именем link, который я установил в модели епархии. Это то, что я думаю, может быть проблема. Он только пересылает следующее в поля в сообщении.

Действие: редактировать
данные [ссылка] [denominat]: Прочее
// это фактическая ссылка на слово, а не значение ссылки с целым числом.

Вот мой JavaScript для него.

$(function() {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': '{{csrf_token()}}'
}
});

var editor = new $.fn.dataTable.Editor({
ajax: "/admin/diocese",
table: "#diocese",
display: "bootstrap",
fields: [
{ label: 'link', name: 'link' },
{ label: 'denominat', name: 'denominat', type: 'select', options: [
"Catholic", "Episcopal", "Methodist", "PNCC", "American Baptist", "ELCA", "AMEZC", "Presbyterian", "Individual", "Other", "AME Church", "ACNA"] },
{ label: 'abbrev', name: 'abbrev' },
{ label: 'diocese', name: 'diocese' },
{ label: 'addrone', name: 'addrone' },
{ label: 'addrtwo', name: 'addrtwo' },
{ label: 'city', name: 'city' },
{ label: 'state', name: 'state' },
{ label: 'zipcode', name: 'zipcode' },
{ label: 'telephone', name: 'telephone' },
]
});

$('#diocese').on('click', 'tbody td:not(:first-child)', function (e) {
editor.inline(this);
});

{{$dataTable->generateScripts()}}
})

Любая помощь будет оценена.

Редактировать. Вот контроллер

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\DataTables\DioceseDataTable;
use App\DataTables\DioceseDataTablesEditor;
use Illuminate\Support\Facades\Schema;

class DioceseController extends Controller
{
public function index(DioceseDataTable $dataTable)
{
return $dataTable->render('admin.diocese.index');
}

public function store(DioceseDataTablesEditor $editor)
{
return $editor->process(request());

}

public function getTableColumns($table)
{
return Schema::getColumnListing($table);
}

}

0

Решение

Я смог решить эту проблему и оставлю ответ для дальнейшего использования. Думать, что данные отправляются как данные [link] [denominat] = «Others», было неправильно, я настроил простой тестовый бланк для отправки этих данных в виде сообщения ajax, но я должен выглядеть так, как я думал, как должны выглядеть данные [42456 ] [denominat] = «Другие», и когда я это сделал, все работало нормально.

Тогда я посмотрел больше на документы редактора, и мне пришлось дать редактору знать имя моего первичного ключа, который был «ссылка». Таким образом, код изменился на то, что ниже.

var editor = new $.fn.dataTable.Editor({
ajax: "/admin/diocese",
table: "#diocese",
idSrc: "link",  // ##added this line
display: "bootstrap",
fields: [
{ label: 'link', name: 'link' },
{ label: 'denominat', name: 'denominat', type: 'select', options: [
"Catholic", "Episcopal", "Methodist", "PNCC", "American Baptist", "ELCA", "AMEZC", "Presbyterian", "Individual", "Other", "AME Church", "ACNA"] },
{ label: 'abbrev', name: 'abbrev' },
{ label: 'diocese', name: 'diocese' },
{ label: 'addrone', name: 'addrone' },
{ label: 'addrtwo', name: 'addrtwo' },
{ label: 'city', name: 'city' },
{ label: 'state', name: 'state' },
{ label: 'zipcode', name: 'zipcode' },
{ label: 'telephone', name: 'telephone' },
]
});
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]