在 Laravel 5.4 中单击时使用控制器编辑数据库
Using controller to edit database on click in Laravel 5.4
我试图让一个按钮在被点击时向数据库传递一个查询。我想在控制器中设置此设置,该控制器还存储请求和删除请求。我能够使用 store() 和 destroy() 写入数据库,但是我的 edit() 函数给我带来了路由问题。使用控制器编辑记录的最佳方法是什么?您将如何构建 edit() 函数?或者...我应该使用 Update() 函数吗?我是 Laravel/PHP 初学者,如果可以,请解释您的答案。谢谢!!
概述:该项目是一个员工记录table。我想单击一个按钮来更改员工的雇佣状态。我已经有了添加新员工和删除员工以及使用同一个控制器的按钮。
这是我为页面设置的路由:
Route::resource('employees', 'EmployeeController');
这是按钮的前端表单代码:
$workers = DB::table('employees')->get();
@foreach($workers as $employee)
{!! Form::open(array(
'method' => 'edit',
'route' => [ 'employees.edit', $employee->id]
)
)
!!}
<button type="submit">Release </button>
{!! Form::close() !!}
@endforeach
这是我的存储函数和销毁函数:
public function store(Request $request)
{
// Confirm Both Fields Are Not Empty
$this->validate($request, [
'first_name' => 'required',
'last_name' => 'required',
]);
//Add a new employee using the request data
$employee = new Employee;
$employee->first_name = request('first_name');
$employee->last_name = request('last_name');
$employee->position = request('position');
$employee->salary = request('salary');
$employee->hire_date = request('hire_date');
//$employee->attach = request('attach');
//Save it to the database
$employee->save();
//And then redirect back to the Employees page
return redirect('/employees');
}
public function destroy($id)
{
$employee = Employee::find($id);
$destroysignal = $employee->delete();
if($destroysignal) {
return redirect('employees');
}
}
您不编辑记录,而是更新它们。在您的情况下,您需要在控制器中使用 update() 函数
public function update(Request $request, $id)
{
$employee = Employee::findOrFail($id);
$employee->employment_status = true; //or false or whatever your statuses are
$employee->update();
return redirect()->back()->with('message', 'Employee updated!');
}
在您的表单中,改用更新路由
{!! Form::model($employee, [
'method' => 'PATCH',
'route' => ['employees.update', $employee->id]])
!!}
<button type="submit">Release </button>
{!! Form::close() !!}
使用资源路由时,'route' => [ 'employees.edit', $employee->id]
最喜欢打开要编辑对象的页面。路由将绑定到控制器的 edit($id)
函数。
也就是说,编辑路径不需要表单。一个简单的锚就可以了
<a href="{{ route('employees.edit', $employee->id) }}">Edit Employee</a>
我试图让一个按钮在被点击时向数据库传递一个查询。我想在控制器中设置此设置,该控制器还存储请求和删除请求。我能够使用 store() 和 destroy() 写入数据库,但是我的 edit() 函数给我带来了路由问题。使用控制器编辑记录的最佳方法是什么?您将如何构建 edit() 函数?或者...我应该使用 Update() 函数吗?我是 Laravel/PHP 初学者,如果可以,请解释您的答案。谢谢!!
概述:该项目是一个员工记录table。我想单击一个按钮来更改员工的雇佣状态。我已经有了添加新员工和删除员工以及使用同一个控制器的按钮。
这是我为页面设置的路由:
Route::resource('employees', 'EmployeeController');
这是按钮的前端表单代码:
$workers = DB::table('employees')->get();
@foreach($workers as $employee)
{!! Form::open(array(
'method' => 'edit',
'route' => [ 'employees.edit', $employee->id]
)
)
!!}
<button type="submit">Release </button>
{!! Form::close() !!}
@endforeach
这是我的存储函数和销毁函数:
public function store(Request $request)
{
// Confirm Both Fields Are Not Empty
$this->validate($request, [
'first_name' => 'required',
'last_name' => 'required',
]);
//Add a new employee using the request data
$employee = new Employee;
$employee->first_name = request('first_name');
$employee->last_name = request('last_name');
$employee->position = request('position');
$employee->salary = request('salary');
$employee->hire_date = request('hire_date');
//$employee->attach = request('attach');
//Save it to the database
$employee->save();
//And then redirect back to the Employees page
return redirect('/employees');
}
public function destroy($id)
{
$employee = Employee::find($id);
$destroysignal = $employee->delete();
if($destroysignal) {
return redirect('employees');
}
}
您不编辑记录,而是更新它们。在您的情况下,您需要在控制器中使用 update() 函数
public function update(Request $request, $id)
{
$employee = Employee::findOrFail($id);
$employee->employment_status = true; //or false or whatever your statuses are
$employee->update();
return redirect()->back()->with('message', 'Employee updated!');
}
在您的表单中,改用更新路由
{!! Form::model($employee, [
'method' => 'PATCH',
'route' => ['employees.update', $employee->id]])
!!}
<button type="submit">Release </button>
{!! Form::close() !!}
使用资源路由时,'route' => [ 'employees.edit', $employee->id]
最喜欢打开要编辑对象的页面。路由将绑定到控制器的 edit($id)
函数。
也就是说,编辑路径不需要表单。一个简单的锚就可以了
<a href="{{ route('employees.edit', $employee->id) }}">Edit Employee</a>