我正在使用以下软件包Spatie Laravel Mail Templates。
我创建了一个资源控制器来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 class中看到它正在扩展口才模型。
有什么建议为什么不加载?
答案 0 :(得分:0)
这是因为route参数和show()
函数参数名称不匹配。
因此,更改路线或更改显示功能。
解决方案一:创建自定义路线
// in this case you cant stick with resource route
Route::get('mailtemplates/{mailTemplate}', 'MailTemplateController@show');
解决方案二:更改显示功能
public function show(MailTemplate $id)
答案 1 :(得分:0)
尝试将控制器参数中的$mailTemplate
更改为$mailtemplate
(小写t)
在docs中,您可以默认看到参数名称是资源的单数版本。给定您的资源名称mailtemplates
,我希望正确的参数名称为mailtemplate
php中的变量区分大小写,因此。$mailTemplate
不匹配。