我真的需要帮助,因为我无法弄清楚问题是什么,并且浏览过的答案都没有成功。
我需要从视图中插入有关员工的数据,这应该非常简单。所以我有两张桌子 - ''部门''和''员工'。当我打开视图'''''''它显示了每个部门,我可以进一步选择其中一个部门,并查看在该部门工作的所有员工,我可以删除员工。一切都在这一点上起作用。但是,当我想添加员工时,它会显示错误 - 参数太少(...)。
路线
Route::get('department/', 'DepartmentController@index');
Route::get('department/delete/{id}','DepartmentController@destroy');
Route::get('employee/new/{id}', 'EmployeeController@new');
Route::get('employee/insert/{id}', 'EmployeeController@store');
Route::get('employee/{id}', 'EmployeeController@index');
EmployeeController
namespace App\Http\Controllers;
use App\Employee;
use App\Department;
use Illuminate\Http\Request;
class EmployeeController extends Controller
{
public function index($department_id){
$employees=Employee::where('department_id','=',$department_id)->get();
return view('employees' ['department_id'=>$department_id,'employees'=>$employees]);
}
public function new ($department_id){
$departments=Department::where('department_id','=',$department_id)->get();
return view('employee_new',['department_id'=>$department_id,'department_name'=>$departments[0]->department_name]);
}
public function store( $id, $name, $surname, $email, $phone){
$employee = new Employee;
$employee->employee_name = $name;
$employee->employee_surname = $surname;
$employee->employee_email = $email;
$employee->employee_phone = $phone;
$employee->department_id = $id;
$employee->save();
}
员工模型
namespace App;
use Illuminate\Database\Eloquent\Model;
class Employee extends Model{
protected $table = 'employees';
public function department() {
return $this->belongsTo('App\Department');
}
}
employee_new.blade(查看)
Adding a new employee for <b>{{ $department_name }}</b> department:
<table>
<tr>
<td>Employee Name<td>
<td>:</td>
<td><input type="text" id="employee_name"></td>
<td>Employee Surname<td>
<td>:</td>
<td><input type="text" id="employee_surname"></td>
<td>Employee Email<td>
<td>:</td>
<td><input type="text" id="employee_email"></td>
<td>Employee Phone number<td>
<td>:</td>
<td><input type="text" id="employee_phone"></td>
<td><input type="button" value="add" onclick="addEmployee()"></td>
</tr>
</table>
<script>
function addEmployee() {
window.location.href="/employee/insert/"+{{$department_id}};
}
</script>
错误行
Symfony \ Component \ Debug \ Exception \
FatalThrowableError (E_RECOVERABLE_ERROR)
Too few arguments to function
App\Http\Controllers\EmployeeController::store(), 1 passed and exactly 5 expected
答案 0 :(得分:1)
您的代码有多个问题,我会逐一指出它们:
我将为您提供一个简单的示例,以便您可以抓住本质
您的观点(假设名为new-user.blade.php):
<form method="post" action="{{ route('saveData') }}">
<input type="text" name="name" />
<button type="submit">Save</button>
</form>
您的控制器(使用saveData方法) - 假设您的控制器名为UserController
加载添加新用户表单方法:
public function userForm()
{
return view('new-user');
}
将数据保存到数据库:
public function saveData(Request $request)
{
$user = new User;
$user->name = $request->name;
$user->save();
// or User::create($request->all());
return view('view-name')->with('status', 'User was saved!');
}
您的路线(在web.php档案中)
Route::get('/new-user', 'UserController@userForm');
//加载表单
Route::post('/create-user', 'UserController@saveData')->name('saveData');
//将数据保存到数据库
答案 1 :(得分:0)
问题与方法参数有关。
public function store(Request $request, $id){
$employee = new Employee;
$employee->employee_name = $request->employee_name;
$employee->employee_surname = $request->employee_surname;
$employee->employee_email = $request->employee_email;
$employee->employee_phone = $request->employee_phone;
$employee->department_id = $id;
$employee->save();
}
输入标签也没有名称属性。