【问题标题】:Laravel form model saving errorLaravel 表单模型保存错误
【发布时间】:2017-05-06 10:56:05
【问题描述】:

每当我更新数据而不是更新数据时,数据都会保存为新条目。 添加任务页面

@extends('master.masterPage')
@section('content')

{!!Form::model($task,['url'=>['employeeTask.update',$task->id], 'class' => 'well form-horizontal']) !!}

    <!-- Text input-->
    <div class="form-group">
    {!! Form::Text('userAssigned', null,array('class' => 'form-control','placeholder'=>'Employee Name')) !!}


    <!-- Text input-->
    <div class="form-group">
   {!! Form::Text('title',null,array('class' => 'form-control','placeholder'=>'Title')) !!}


    <!-- Text input-->
    <div class="form-group">
    {!!Form::Textarea('description',null,array('class' => 'form-control','placeholder'=>'Description')) !!}

    <!-- Text input-->
   {!! Form::Text('client',null,array('class' => 'form-control','placeholder'=>'Client Name')) !!}

   <div class="form-group">
   {!!Form::Text('completionDate',null,array('class' =>'formcontrol','placeholder'=>'Date' )) !!}

    <!-- Button -->
    <div class="form-group">
    {{Form::Submit('Save',['class'=>'glyphicon glyphicon-send'])}}

{!! Form::close() !!}

路由:web.php

Route::resource('employeeTask','employeeTaskController');

员工任务控制器文件名:employeeTaskController

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Webpatser\Uuid\Uuid;
use App\Model\task;

class employeeTaskController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $data= task::all();
        return view('userPage.employeeTaskManagement')->with('data',$data);
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        //
        return view('userPage.addTaskPage');
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        //
        $task = new task([
            'id' => Uuid::generate()->string,
            'userAssigned' => $request->employeeName_txt,
            'title' => $request->title_txt,
            'description' => $request->description_txt,
            'client' => $request->clientName_txt,
            'completionDate' =>date('Y-m-d',strtotime($request->completionDate_txt)),
            'status' => $request->status_dd,
        ]);
        $task->save();
        return redirect('employeeTask')->with('message','task has been saved Successfully');
    }


    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        $task= task::find($id);
        return view('userPage.editTaskPage')->with('task',$task);
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        //
        $task = task::find($id);
        $task->userAssigned = $request->employeeName_txt;
        $task->title = $request->title_txt;
        $task->description = $request->description_txt;
        $task->client = $request->clientName_txt;
        $task->completionDate = date('Y-m-d',strtotime($request->completionDate_txt));
        $task->status = $request->status_dd;
        $task->save();
        return redirect('employeeTask')->with('message','task has been Updated Successfully');        
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        //
    }
}

请检查当我按下保存时它会转到employee.store 路由而不是employee.update

【问题讨论】:

  • 试试这个 Route::resource('employeeTask','employeeTaskController@update');

标签: laravel laravel-5 laravel-5.3 laravel-5.4


【解决方案1】:

如果您签入documentation POST 将被路由到store 方法,PUT/PATCH 将被路由到更新方法。

您可以做的是调用updateOrCreate 方法,因此您需要将您的存储方法更改为

public function store(Request $request)
{
    $task = task::updateOrCreate(
        [
            'id' => Uuid::generate()->string // Pass in the ID to cross check
        ],
        [
            'id' => Uuid::generate()->string,
            'userAssigned' => $request->employeeName_txt,
            'title' => $request->title_txt,
            'description' => $request->description_txt,
            'client' => $request->clientName_txt,
            'completionDate' =>date('Y-m-d',strtotime($request->completionDate_txt)),
            'status' => $request->status_dd,
        ]
    );

    return redirect('employeeTask')->with('message','task has been saved Successfully');
}

【讨论】:

    【解决方案2】:

    只需添加这一行:

    {!! method_field('put') !!}
    

    在这一行之后:

    {!!Form::model($task,['url'=>['employeeTask.update',$task->id], 'class' => 'well form-horizontal']) !!}
    

    所以,laravel 会知道你需要更新数据并使用方法 update() 而不是 store()

    【讨论】:

    • RouteCollection.php 第 251 行中的 MethodNotAllowedHttpException:
    • 更改: {!!Form::model($task,['url'=> To: {!!Form::model ($task,['route'=>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多