Php Facade\Ignition\Exceptions\ViewException缺少[Route:trainingcategories.update]所需的参数
可以seam找出什么问题是模型没有返回任何数据,我已经检查了控制器、视图、路由和一切似乎都正常Php Facade\Ignition\Exceptions\ViewException缺少[Route:trainingcategories.update]所需的参数,php,laravel,view,model,controller,Php,Laravel,View,Model,Controller,可以seam找出什么问题是模型没有返回任何数据,我已经检查了控制器、视图、路由和一切似乎都正常 public function edit(TrainingCategory $trainingCategory) { return view('admin.trainingcategories.edit')->with(['trainingcategory'=>$trainingCategory]); } 这是我的控制器方法,$trainingC
public function edit(TrainingCategory $trainingCategory)
{
return view('admin.trainingcategories.edit')->with(['trainingcategory'=>$trainingCategory]);
}
这是我的控制器方法,$trainingCategory不会从数据库返回所需的数据
Route::prefix('admin')->middleware('is_admin')->group(function () {
Route::get('/dashboard', 'HomeController@adminHome')->name('admin.home');
Route::resource('positions', 'PositionsController');
Route::resource('departments', 'DepartmentsController');
Route::resource('trainings', 'TrainingsController');
Route::resource('trainingcategories', 'TrainingCategoriesController');
Route::get('/trainingcategories/{id}/{action}', 'TrainingCategoriesController@changestatus')->name('trainingcategories.status');
});
这是我的路线文件,显示代码
@extends('layouts.admin')
@section('content')
<div class="app-main__inner">
<div class="app-page-title">
<div class="page-title-wrapper">
<div class="page-title-heading">
<div class="page-title-icon">
<i class="pe-7s-user icon-gradient bg-mean-fruit">
</i>
</div>
<div>Edit Training Category
<div class="page-title-subheading">Modify.
</div>
</div>
</div>
<div class="page-title-actions">
<div class="d-inline-block dropdown">
<a href="{{ route('trainingcategories.create') }}" type="button" class="btn-shadow btn btn-info">
Create New Training Category
<span class="btn-icon-wrapper pr-2 opacity-7">
</span>
</a>
<a href="{{ route('trainingcategories.index') }}" type="button" class="btn-shadow btn btn-primary">
List Training Categories
<span class="btn-icon-wrapper pr-2 opacity-7">
<i class="fa fa-arrow-right fa-w-20"></i>
</span>
</a>
</div>
</div>
</div>
</div>
<!--Data table section-->
<div class="row">
<div class="col-md-12">
<nav class="" aria-label="breadcrumb">
<ol class="breadcrumb">
<li class="breadcrumb-item"><a href="{{ route('admin.home') }}">Dashboard</a></li>
<li class="breadcrumb-item"><a href="{{ route('trainingcategories.index') }}">Training Category</a></li>
<li class="active breadcrumb-item" aria-current="page">Edit Training Category</li>
</ol>
</nav>
<!--alerts-->
@if(!empty($errors->all()) )
<div class="alert alert-danger fade show" role="alert">
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</div>
@endif
<!--end alerts-->
<div class="main-card mb-3 card">
<div class="card-body"><h3 class="h4">Edit Training Category > <b>{{ $trainingcategory->name }}</b><br>
<small class="muted">Modify</small></h3>
<hr>
<form class="needs-validation" novalidate method="POST" action="{{ route('trainingcategories.update',['trainingcategory'=>$trainingcategory->id]) }}">
@csrf
@method('PUT')
<div class="department-relative form-group">
<label for="name" class="">Name</label>
<input name="name" id="name" placeholder="Enter training category" type="text" class="form-control"
value="{{ old('name',$trainingcategory->name) }}" required>
<div class="valid-feedback">
Looks good!
</div>
<div class="invalid-feedback">
Please enter training category.
</div>
</div>
<div class="department-relative form-group">
<label for="description" class="">Active<i class="muted"></i></label>
@include('includes._active_select')
</div>
<div class="department-relative form-group">
<label for="description" class="">Training Description<i class="muted">(Optional)</i></label>
<textarea name="description" id="description" class="form-control" required> {{ old('description',$trainingcategory->description) }} </textarea>
<div class="valid-feedback">
Looks good!
</div>
<div class="invalid-feedback">
Please enter training description.
</div>
</div>
<button class="mt-1 btn btn-primary">update</button>
</form>
</div>
</div>
</div>
</div>
<!-- form validation-->
<script>
// Example starter JavaScript for disabling form submissions if there are invalid fields
(function() {
'use strict';
window.addEventListener('load', function() {
// Fetch all the forms we want to apply custom Bootstrap validation styles to
var forms = document.getElementsByClassName('needs-validation');
// Loop over them and prevent submission
var validation = Array.prototype.filter.call(forms, function(form) {
form.addEventListener('submit', function(event) {
if (form.checkValidity() === false) {
event.preventDefault();
event.stopPropagation();
}
form.classList.add('was-validated');
}, false);
});
}, false);
})();
</script>
<!--end data table section-->
</div>
@endsection
@extends('layouts.admin'))
@节(“内容”)
编辑培训类别
修改
编辑培训类别
@如果(!empty($errors->all()))
@foreach($errors->all()作为$error)
{{$error}}
@endforeach
@恩迪夫
编辑培训类别>{{$trainingcategory->name}}
修改
@csrf
@方法('PUT')
名称
看起来不错!
请输入培训类别。
活跃的
@包括('includes.\u active\u select')
培训说明(可选)
{{old('description',$trainingcategory->description)}
看起来不错!
请输入培训说明。
更新
//示例starter JavaScript,用于在存在无效字段时禁用表单提交
(功能(){
"严格使用",;
addEventListener('load',function()){
//获取要应用自定义引导验证样式的所有表单
var forms=document.getElementsByClassName('needs-validation');
//对它们进行循环并防止提交
var validation=Array.prototype.filter.call(表单,函数(表单){
表单.addEventListener('submit',函数(事件){
if(form.checkValidity()==false){
event.preventDefault();
event.stopPropagation();
}
form.classList.add('was-validated');
},假);
});
},假);
})();
@端部
以下是我的观点错误与[Route:trainingcategories.update]有关。 当你这么做的时候:
Route::resource('trainingcategories','TrainingCategoriesController');
您在trainingcategories控制器的更新方法中生成此路由:trainingcategories.update,该路由正在等待$trainingcategories参数
像这样:
public function update(TrainingCategory $trainingCategory)
所以,您需要查看更新方法。编辑方法不受约束。您已经演示了如何生成路由:
route('trainingcategories.update',['trainingcategory'=>$trainingcategory->id])
不需要传入关联数组,可以传入模型
route('trainingcategories.update', $trainingcategory)
确保
$traningcategory
确实存在,并且ID属性不为null。Laravel抱怨它没有得到所需的参数。伙计们,我最终通过将变量名trainingCategory更改为$trainingCategory(注意小写字母“c”,与资源路由命名匹配)解决了这个问题。因此,资源从数据库返回数据
Route::prefix('admin')->middleware('is_admin')->group(function () {
Route::get('/dashboard', 'HomeController@adminHome')->name('admin.home');
Route::resource('positions', 'PositionsController');
Route::resource('departments', 'DepartmentsController');
Route::resource('trainings', 'TrainingsController');
Route::resource('trainingcategories', 'TrainingCategoriesController');
Route::get('/trainingcategories/{id}/{action}', 'TrainingCategoriesController@changestatus')->name('trainingcategories.status');
});
Laravel自动解析在路由或控制器操作中定义的类型提示模型,这些模型的变量名称与路由段名称匹配。您没有包括实际调用的代码
route('trainingcategories.update')
-你能把它包括进来吗?在我的视图中,这里是调用php artisan route:list查找route trainingcategories.update并查看你缺少的route参数的名称,很明显命名有问题。我猜它不知道如何从复数到单数当你没有驼峰式训练类别。刚刚测试了我的评论和命名似乎是好的,但仍然尝试运行php artisan route:list看看我做了什么这里是我的路线列表片段`| PUT | PATCH | admin/trainingcategories/{trainingcategory}| trainingcategories.update | App\Http\Controllers\TrainingCategoriesController@update| web,is_admin`我没有提交表单Yet id不为空,但是模型$trainingCategory在`公共功能编辑(trainingCategory$trainingCategory){返回视图('admin.trainingcategories.edit')中返回空值->使用(['trainingcategory'=>$trainingcategory]);}`这是我对表公共函数up()的迁移。
$table->increments('id')$表->字符串('name')$表->文本('description')->nullable()$表->tinyinteger('active')->默认值('1')$表->时间戳()`你说得对!我将方法参数的名称改为Category,而不是productCategory,以便在{}=>product/categories/{Category}中具有与route:list相同的命名