美文网首页
laravel day 5 section 3: edit an

laravel day 5 section 3: edit an

作者: 妙啊啦 | 来源:发表于2019-03-03 12:30 被阅读0次

    大背景知识,这里可以是认为的比较重要的部分。
    laravel 不支持直接put来修改form

    ============================ 报错的原因与解决 ==========================
    step 1 思路
    我们先从数据库里面把数据获取,然后将数据放进写好的表格里面,在表格俩面修改好,最后提交

    step 2:
    写一个放获取数据的表格

    {!! Form::open(array('action' => ['todolistController@update', $todo->id] , 'method' => 'POST')) !!}
                    {{ Form::bsText('text', $todo->text)}}
                    {{ Form::bsTextArea('body', $todo->body)}} 
                    {{ Form::bsText('due', $todo->due)}}
                    {{ Form::hidden("_method", 'PUT')}}
                    {{ Form::bsSubmit('update', ['class'=>'btn btn-primary']) }}
               {!! Form::close() !!}
    

    这里需要注意,像我之前所说的,laravel是不支持put的,所以我们要一个hidden component老完成这个update
    修改provider

        public function boot()
        {
            Form::component('bsText', 'components.form.text', ['name', 'value' => null, 'attributes' => []]);
            Form::component('bsTextArea', 'components.form.textarea', ['name', 'value' => null, 'attributes' => []]);
            Form::component('bsSubmit', 'components.form.submit', ['value' => 'Submit', 'attributes' => []]);
            Form::component('hidden', 'component.form.hidden', ['name', 'value' => null, 'attributes' => []]);
        }
    

    在component form里面写一个专门提交的form

    {{Form::hidden($name, $value, $attributes)}}
    

    这样就可以啦

    step 2 获取数据并且卸乳表格
    这步应该是由controller来完成的

        public function edit($id)
        {
            $todo = todo::find($id);
            
            return view('todos.edit')->with('todo', $todo);
        }
    

    step 3 根据修改的数据并且提交

        public function update(Request $request, $id)
        {
            $todo = todo::find($id);        
            $todo->text = $request->input('text');
            $todo->body = $request->input('body');
            $todo->due = $request->input('due');
            $todo->save();
    
            return redirect('/')->with("success", 'update successfully');
        }
    

    这样update的部分也就已经完成了

    ============================ 报错的原因与解决 ==========================
    报错: Creating default object from empty value
    原因:我把表格里面的obj也写在了string里面

     {!! Form::open(array('action' => ['todolistController@update', '$todo->id'] , 'method' => 'POST')) !!}
    

    解决:
    实际上应该是这样的

     {!! Form::open(array('action' => ['todolistController@update', $todo->id] , 'method' => 'POST')) !!}
    

    相关文章

      网友评论

          本文标题:laravel day 5 section 3: edit an

          本文链接:https://www.haomeiwen.com/subject/ghquuqtx.html