我正在尝试用ajax/jquery制作一个动态表。
显示搜索结果后,我希望每一行都有编辑和删除等操作,这些操作将负责每个条目。这是我的控制器方法
public function search(Request $request){
if($request->ajax()){
$output="";
// $users=DB::table('users')->where('user_id','LIKE','%'.$request->search."%")->get();
$grammar_cards = FlashCard::where('lang','=','gr')
->where(function($query) use ($request){
$query->where('word','LIKE', '%'.$request->search.'%')
->orWhere('option1','LIKE', '%'.$request->search.'%')
->orWhere('option2','LIKE', '%'.$request->search.'%')
->orWhere('option3','LIKE', '%'.$request->search.'%')
->orWhere('option_correct','LIKE', '%'.$request->search.'%')
->orderBy('class')
->orderby('unit_id');
})->paginate(20);
// $flashcards->setPath('custom/url');
if($grammar_cards){
foreach ($grammar_cards as $key => $grammar_card) {
$grammarcard_question = $grammar_card->word;
$grammarcard_ch1 = $grammar_card->option1;
$grammarcard_ch2 = $grammar_card->option2;
$grammarcard_ch3 = $grammar_card->option3;
$grammarcard_correctchoice = $grammar_card->option_correct;
$grammarcard_unit = $grammar_card->unit_id;
$grammarcard_class = $grammar_card->class;
$output.='<tr>'.
'<td>'.$grammarcard_question.'</td>'.
'<td>'.$grammarcard_ch1.'</td>'.
'<td>'.$grammarcard_ch2.'</td>'.
'<td>'.$grammarcard_ch3.'</td>'.
'<td>'.$grammarcard_correctchoice.'</td>'.
'<td>'.$grammarcard_unit.'</td>'.
'<td>'.$grammarcard_class.'</td>'.
'<td style="display:flex;">
<a href="/admin/grammar/'.$grammar_card->id.'/edit" style="margin-right:10px;"><button class="btn btn-info">რედაქტირება</button></a>
<form action="{{ route('grammar.destroy', '.$grammar_card->id.')}}" method="post">
@csrf
@method('DELETE')
<button class="btn btn-danger" type="submit">delete</button>
</form></td>'.
'</tr>';
}
return Response($output);
// return view('admin.grammar.index', ['output' => $output])->render();
}
}
}
这是我的路线
Route::resource('/admin/grammar', 'GrammarController');
这是我的销毁方法
public function destroy($id)
{
$grammar_card = FlashCard::find($id);
$grammar_card->delete();
return redirect('admin/grammar')->with('success', 'successfully deleted');
}
这是我的输出
它打印出@csrf @method("删除"(作为文本以及删除按钮
当我点击删除按钮时 它转到网址 localhost:8000/admin/%7B%7B%20route('grammar.destroy',%2040271(%7D%7D 并输出 419 错误
你能告诉我如何解决这个问题吗?
应为使用"$grammar_cards"数据生成的表创建新的边栏选项卡视图,而不是在控制器中生成 HTML。
因此,假设您在资源/视图文件夹中创建了"grammar_cards.blade.php"文件。 并在blade.php文件中添加以下代码
@if($grammar_cards)
@foreach($grammar_cards as $key => $grammar_card)
<tr>
<td>{!! $grammar_card->word !!}</td>
<td>{!! $grammar_card->option1 !!}</td>
<td>{!! $grammar_card->option2 !!}</td>
<td>{!! $grammar_card->option3 !!}</td>
<td>{!! $grammar_card->option_correct !!}</td>
<td>{!! $grammar_card->unit_id !!}</td>
<td>{!! $grammar_card->class !!}</td>
<td style="display:flex;">
<a href="/admin/grammar/'.$grammar_card->id.'/edit" style="margin-right:10px;">
<button class="btn btn-info">რედაქტირება</button>
</a>
<form action="{{ route('grammar.destroy', '.$grammar_card->id.')}}" method="post">
@csrf
@method('DELETE')
<button class="btn btn-danger" type="submit">delete</button>
</form>
</td>
</tr>
@endforeach
@endif
在视图中传递"$grammar_cards"变量 像这样的东西。
$table_html = view('grammar_cards')->with(compact('grammar_cards'))->render();
使用 $table_html 传递以响应要显示它们的位置。
问题是您正在使用刀片特定功能,例如"@csrf"和 "@method",您不能在其他地方使用,而只能使用 .blade.php 文件。
希望这个帮助!!