При использовании пакета Vendor не работает привязка к красноречивой модели - PullRequest
0 голосов
/ 02 мая 2019

Я использую следующий пакет Почтовые шаблоны Spatie Laravel .

Я создал контроллер ресурсов для CRUD шаблонов и следующего объявления маршрута:

Route::resource('mailtemplates', 'MailTemplateController');

Если я захожу на /mailtemplate/1, он не загружает модель с использованием primaryKey, он только проходит через 1 в методе.В моем контроллере:

use Spatie\MailTemplates\Models\MailTemplate;

...

public function show(MailTemplate $mailTemplate)

Ответ от dd($mailTemplate)

MailTemplate {#592 ▼
#guarded: []
#connection: null
#table: null
#primaryKey: "id"
#keyType: "int"
+incrementing: true
#with: []
#withCount: []
#perPage: 15
+exists: false
+wasRecentlyCreated: false
#attributes: []
#original: []
#changes: []
#casts: []
#dates: []
#dateFormat: null
#appends: []
#dispatchesEvents: []
#observables: []
#relations: []
#touches: []
+timestamps: true
#hidden: []
#visible: []
#fillable: []
}

Странно, что соединение и таблица равны нулю?

Я вижу в Класс MailTemplate расширяет Eloquent Model.

Есть предложения, почему он не загружается?

Ответы [ 2 ]

0 голосов
/ 03 мая 2019

Попробуйте изменить $mailTemplate на $mailtemplate в параметрах контроллера (строчная буква t)

В документах по умолчанию видно, что имя параметра является единственной версией ресурса,Учитывая ваше имя ресурса mailtemplates Я ожидаю, что правильное имя параметра будет mailtemplate

Переменные в php чувствительны к регистру, поэтому $mailTemplate не соответствует.

0 голосов
/ 02 мая 2019

Это потому, что несоответствие параметра маршрута и show() имени параметра функции.

Так что либо измените свой маршрут, либо измените функцию шоу.

Решение первое: создать собственный маршрут

// in this case you cant stick with resource route
Route::get('mailtemplates/{mailTemplate}', 'MailTemplateController@show');

Решение второе: изменить функцию шоу

public function show(MailTemplate $id)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...