laravel方法POST在提交时未显示错误消息

时间:2017-11-21 01:45:07

标签: php laravel

当我尝试提交数据时,我收到一条无错误消息,当我检查与此问题相关的问题时,他们说这是路由方法,我必须使用POST而不是GET但我已经使用POST功能。问题是什么?

对于id部分,我已经使用dd进行了检查,它就在那里,但为什么我在查看页面源时仍然获得user_id的空值。

关系:personal_info hasOne清单,使用user_id作为FK

checklistController:

        public function checklist(Request $request){
                $checklist = new checklist;
                $personal_info = new personal_info;
                $checklist->check_nric = $request->input('check_nric');
                $checklist->remark_nric = $request->input('remark_nric');
                $id = $request->user_id;
                $id= personal_info::find($id);
                $id->checklists()->save($checklist);
            return redirect('/home');
        }
      public function getChecklist(Request $request,$id){
           //$data0 = personal_info::whereDoesntHave('checklists')->get();
        $data0 = personal_info::where('id',$id)->get();
           if(count($data0)>0){
            return view('checklist1',compact('data0'));
        }else{
        return view('checklist1');
    }
    }

         public function showChecklist(){ 
$data = DB::table('personal_infos')->where('personal_infos.deleted_at', NULL)->get()->sortByDesc('created_at'); 

 if(count($data)>0){ 
 return view('checklist',compact('data')); 
 } 
 else{ 
 return view('checklist',compact('data')); 
 } 
 }

checklist1.blade.php

@foreach($data0 as $value)
 <form class="form-horizontal" method="post" action="{{ url('/checklist/'.$value->user_id) }}">
        {{ csrf_field() }}
         <input type="hidden" name="user_id" value="{{$value->user_id}}">
         @endforeach
  <div class="row">
          <label class="col-md-2"><b>NRIC:</b></label>
           <div class="col-md-6">
      <input type="radio" name="check_nric" value="Yes"> Yes<br>
     <input type="radio" name="check_nric" value="No"> No<br>
          </div>
        </div>
      <div class="row">
        <label class="col-md-2"><b>NRIC Remarks:</b></label>
      <div class="col-md-6">
         <input type="text" name="remark_nric" class="form-control">
      </div>
    </div>
  <div class="col-md-6-offset-2">
              <input type="submit" class="btn btn-primary" value="Save">
            </div>
        </form>  

路线:

Route::get('/checklist', 'checklistController@showChecklist');
Route::get('/user/showchecklist/{id}/checklist', 'checklistController@getChecklist');
Route::post('/checklist/{id}', 'checklistController@checklist');

这是浏览器中显示的内容: enter image description here

dd($ data0)看起来像checklist1.blade.php enter image description here

3 个答案:

答案 0 :(得分:0)

我猜你的$ data0没有名为“user_id”的属性;

我会这样做:

 $data0 = personal_info::where('id',$id)->get();

 // make sure count($data0) is a 'TRUE' result 
 dump(count($data0));

 // make sure $data0 "user_id" attribute is not empty
 dd($data0)

如果你表明这两个结果将提出问题清楚;
抱歉我的英语不好,但我非常想帮助你。

BTW ,如果您只有一条数据,请使用 - &gt; first()而不是 - &gt; get() 像这样:
PHP

  $data0 = personal_info::where('id',$id)->first();

  if(!$data0){
     abort(404)
  }

  return view('checklist1',compact('data0'));

<强>叶片

 <form class="form-horizontal" method="post" action="{{url('/checklist/'.$data0->user_id) }}">
     {{ csrf_field() }}
 <input type="hidden" name="user_id" value="{{$data0->user_id}}">
    ...

答案 1 :(得分:0)

如果您在使用compact时遇到困难,为什么不将其指定为数组,因为您只需在模板文件中使用变量“$ value”。

<强> checklistController:

public function checklist(Request $request) {
    $checklist = new checklist;
    $personal_info = new personal_info;
    $checklist->check_nric = $request->input('check_nric');
    $checklist->remark_nric = $request->input('remark_nric');
    $id = $request->user_id;
    $id= personal_info::find($id);
    $id->checklists()->save($checklist);
    return redirect('/home');
}

public function getChecklist(Request $request,$id) {
    //$data0 = personal_info::whereDoesntHave('checklists')->get();
    $data0 = personal_info::where('id', $id)->first();
    if (count($data0)>0) {
        return view('checklist1', ['user_id' => $data0->user_id]);
    } else {
        return view('checklist1');
    }
}

<强> checklist1.blade.php:

<form class="form-horizontal" method="post" action="{{ url('/checklist/'. $user_id) }}">
    {{ csrf_field() }}
    <input type="hidden" name="user_id" value="{{ $user_id }}">
    <div class="row">
        <label class="col-md-2"><b>NRIC:</b></label>
        <div class="col-md-6">
            <input type="radio" name="check_nric" value="Yes"> Yes<br>
            <input type="radio" name="check_nric" value="No"> No<br>
        </div>
    </div>
    <div class="row">
        <label class="col-md-2"><b>NRIC Remarks:</b></label>
        <div class="col-md-6">
            <input type="text" name="remark_nric" class="form-control">
        </div>
    </div>
    <div class="col-md-6-offset-2">
        <input type="submit" class="btn btn-primary" value="Save">
    </div>
</form>

答案 2 :(得分:0)

尝试并玩游戏后,似乎通过删除foreach循环并将user_id更改为id,它可以解决问题。我不知道为什么,如果有可能,有人可以向我解释一下?

 <form class="form-horizontal" method="post" action="{{ url('/checklist/'.$data0->id) }}">
        {{ csrf_field() }}
 <input type="hidden" name="user_id" value="{{$data0->id}}">