【发布时间】:2014-12-01 21:52:06
【问题描述】:
我是 Laravel 的新手,我试图在控制器中调用 destroy 函数并传入两个参数,但出现错误:GradoController::destroy() 的异常缺少参数 2。
我的成绩从 1(第一)到 6(第六),每个都有与之相关的科目。成绩在页面上的选项卡中列出,通过单击选项卡,您可以获得与成绩相关的科目列表。我在每个主题旁边放置了一个删除按钮,以便用户可以单击删除并将该主题从成绩中分离出来。
我正在尝试将gradeId 和subjectId 都传递给GradoController 中的destroy 方法
我的视图文件 index.blade.php:
<html>
<head>
{{HTML::script('assets/js/jquery-1.11.1.js'); }}
{{HTML::script('assets/js/jquery-ui.js'); }}
{{HTML::script('assets/js/jquery-ui.min.js'); }}
{{HTML::style('assets/css/jquery-ui.min.css'); }}
<script>
$(function() {
$( '#tabs' ).tabs();
});
</script>
</head>
<body>
<h1>Lista Materias por Grado</h1>
<?php
$year = date("Y");
$month = date("m");
if($month < 8){
$year = $year - 1;
} ?>
<h2>{{$year}}-{{$year+1}}</h2>
<div id="tabs">
<ul> <?php $i=1; ?>
@foreach($grados as $grado)
<li><a href="#tabs-{{$i}}">Grado:{{ $grado->name_grados}} </a></li>
<?php $i++; ?>
@endforeach
</ul>
<?php $i = 1; ?>
@foreach($grados as $grado)
<div id="tabs-{{$i}}" >
@if($grado->subject->count())
@foreach($grado->subject as $subject)
<li> {{ $subject->name_subjects }}
{{Form::open(array('method' => 'DELETE', 'route' => array('grados.destroy', $grado->id_grados, $subject->id_subjects))) }}
{{ Form::submit('Delete',array('class' => 'btn btn-danger')) }}
</li>
@endforeach
@else
No hay materias asociadas
@endif
</br></br>
{{ link_to_route('grados.edit', 'Agregar Materias',
array($grado->id_grados), array('class' => 'btn btn-info')) }}
<?php $i++; ?>
</div>
@endforeach
</div>
我的 GradoController 的销毁函数:
public function destroy($gradoId, $subjectId)
{
$grado = Grado::find($gradoId);
$year = 2014;
$grado->subject()->detach($subjectId, array('year_grado_subject'=>$year));
return Redirect::route('grados.index');
}
在我拥有的路线中:
Route::get('grados/{id_grados}/{id_subjects}/destroy', 'GradoController@destroy');
Route::resource('grados', 'GradoController');
谢谢!
【问题讨论】:
-
$subject->id_subjects 您的数据库中有一个名为 id_subjects 的字段吗?或者是 id_subject
-
是的,它叫做 id_subjects。