如何从 laravel 中的列表中删除待办事项列表项?
How can I delete a to do list item from the list in laravel?
我正在尝试删除 laravel 中的项目。这是我的代码:
这是我的路线:
Route::resource('', 'TodosController');
这是我的控制器:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Todo;
class TodosController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$todos = Todo::all();
return view('pages.home')->with('todos', $todos);
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
return view('pages.home');
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$this->validate($request, [
'todo' => 'required'
]);
// Create todo
$todo = new Todo;
$todo->todo = $request->input('todo');
$todo->save();
return redirect('/')->with('success', 'Todo created');
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
$todo = Todo::find($id);
return view('pages.todo')->with('todo', $todo);
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
$todo = Todo::find($id);
return redirect('/')->with('success', 'Todo edited');
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
$todo = Todo::find($id);
$todo->delete();
return redirect('/')->with('success', 'Todo deleted');
}
}
这是我的表单模板:
<li class="list-group-item mb-5">
{{-- Edit button --}}
{!! Form::open(['action' => ['TodosController@update', $todo->id], 'method' => 'POST', 'class' => 'pull-right']) !!}
{{ Form::hidden('_method', 'PUT') }}
{{ Form::submit('Edit', ['class' => 'btn btn-primary m-auto', 'style' => 'display:block;']) }}
{!! Form::close() !!}
<p style="text-align:center;text-transform:uppercase;font-weight:700;font-size:2rem;" class="m-0 mt-5 mb-5">
<a href="{{ url('/'.$todo->id) }}">{{ $todo->todo }}</a>
</p>
{{-- Delete button --}}
{!! Form::open(['action' => ['TodosController@destroy', $todo->id], 'method' => 'POST', 'class' => 'form-group']) !!}
{{ Form::hidden('_method', 'DELETE') }}
{{ Form::submit('×', ['class' => 'btn btn-danger m-auto', 'style' => 'display:block;']) }}
{!! Form::close() !!}
</li>
我预计它会删除项目并重定向到 /
,但实际上它会重定向到 /$id
并抛出 404 not found error
.
伙计们,如果你在其他地方看到过这个问题,我很抱歉,但我真的需要帮助,但我没有找到任何有用的东西。
谢谢。
使用线路
使用App\Http\Controllers\Controller;
并用于删除
在blade
<td>
{!! Form::open(array('route' => array('products.destroy', $product->id), 'method' => 'delete')) !!}
<button type="submit" class="btn btn-danger" onclick="return confirm('Are you sure?')"><i class="fa fa-trash-o"></i></button>
{!! Form::close() !!}
</td>
正如所写,您有一个无效的足智多谋的路线 Route::resource('', 'TodosController');
这应该可以解释您的 404 错误。尝试类似的东西:
Route::resource('todo', 'TodosController')
然后使用 HTTP GET 重新测试到 /todo 并查看您的 TodosController@index()
方法是否按预期工作。
我正在尝试删除 laravel 中的项目。这是我的代码:
这是我的路线:
Route::resource('', 'TodosController');
这是我的控制器:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Todo;
class TodosController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$todos = Todo::all();
return view('pages.home')->with('todos', $todos);
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
return view('pages.home');
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$this->validate($request, [
'todo' => 'required'
]);
// Create todo
$todo = new Todo;
$todo->todo = $request->input('todo');
$todo->save();
return redirect('/')->with('success', 'Todo created');
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
$todo = Todo::find($id);
return view('pages.todo')->with('todo', $todo);
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
$todo = Todo::find($id);
return redirect('/')->with('success', 'Todo edited');
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
$todo = Todo::find($id);
$todo->delete();
return redirect('/')->with('success', 'Todo deleted');
}
}
这是我的表单模板:
<li class="list-group-item mb-5">
{{-- Edit button --}}
{!! Form::open(['action' => ['TodosController@update', $todo->id], 'method' => 'POST', 'class' => 'pull-right']) !!}
{{ Form::hidden('_method', 'PUT') }}
{{ Form::submit('Edit', ['class' => 'btn btn-primary m-auto', 'style' => 'display:block;']) }}
{!! Form::close() !!}
<p style="text-align:center;text-transform:uppercase;font-weight:700;font-size:2rem;" class="m-0 mt-5 mb-5">
<a href="{{ url('/'.$todo->id) }}">{{ $todo->todo }}</a>
</p>
{{-- Delete button --}}
{!! Form::open(['action' => ['TodosController@destroy', $todo->id], 'method' => 'POST', 'class' => 'form-group']) !!}
{{ Form::hidden('_method', 'DELETE') }}
{{ Form::submit('×', ['class' => 'btn btn-danger m-auto', 'style' => 'display:block;']) }}
{!! Form::close() !!}
</li>
我预计它会删除项目并重定向到 /
,但实际上它会重定向到 /$id
并抛出 404 not found error
.
伙计们,如果你在其他地方看到过这个问题,我很抱歉,但我真的需要帮助,但我没有找到任何有用的东西。
谢谢。
使用线路
使用App\Http\Controllers\Controller;
并用于删除
在blade
<td>
{!! Form::open(array('route' => array('products.destroy', $product->id), 'method' => 'delete')) !!}
<button type="submit" class="btn btn-danger" onclick="return confirm('Are you sure?')"><i class="fa fa-trash-o"></i></button>
{!! Form::close() !!}
</td>
正如所写,您有一个无效的足智多谋的路线 Route::resource('', 'TodosController');
这应该可以解释您的 404 错误。尝试类似的东西:
Route::resource('todo', 'TodosController')
然后使用 HTTP GET 重新测试到 /todo 并查看您的 TodosController@index()
方法是否按预期工作。