CRUD-创建无效

时间:2018-10-28 18:11:20

标签: php laravel

我正在尝试使用Create按钮添加元素,但是恢复无法正常进行。我没有错误消息...但是我的Delete按钮效果很好。

在我的AdminController中,我有这个:

class AdminController extends Controller
{
    public function getHome(){
        $devis = Devis::all()->sortByDesc("created_at");
        return view('admin.devis.home', compact('devis'));
    }

    public function destroy(Devis $devis)
    {
        $devis->delete();
        return redirect('/admin');
    }

    public function create()
    {
        return view('admin.devis.create');

    }

    public function store(Request $request)
    {
        $request->validate([
                'firstname' => 'required',
                'lastename' => 'required'
        ]);
        Devis::create($request->all());
        return redirect()->route('admin.devis.home')
                    ->with('success', 'un étudiant a été crée');
    }

}

我认为控制器是正确的。

在我的文件夹View => Admin => Devis中,我有2个文件:

Home.blade.php

@section('content')
  <div class="px-content">
    <div class="page-header">
      <div class="row">
        <div class="col-md-4 text-xs-center text-md-left text-nowrap">
          <h1><i class="px-nav-icon ion-android-apps"></i>Listing </h1>
        </div>
        <hr class="page-wide-block visible-xs visible-sm">
        <!-- Spacer -->
        <div class="m-b-2 visible-xs visible-sm clearfix"></div>
      </div>
    </div>
    <div class="row">
      <div class="panel">
        <div class="panel-body">
          <div class="table-responsive">
            <table class="table">
              <thead>
                <tr>
                  <th>Firstname</th>
                  <th>Lastename</th>
                  <a class="btn btn-sm btn-success" href="{{ route('devis.create') }}">Create</a>
                </tr>
              </thead>
              @foreach($devis as $item)
                <tr>
                   <td> {{$item->firstname}} </td>
                   <td> {{$item->lastname}} </td>
                   <td> <a href="/devis/delete/{{$item->id}}" class="btn btn-danger"><span class="left ion-close"></span></a></td>
                </tr>
              @endforeach
            </table>
          </div>
        </div>
      </div>
    </div>
  </div>
@endsection

然后create.blade.php

@section('content')
  <div class="px-content">
    <div class="page-header">
      <div class="row">
        <div class="col-md-4 text-xs-center text-md-left text-nowrap">
          <h1><i class="px-nav-icon ion-android-apps"></i>Devis</h1>
        </div>
        <hr class="page-wide-block visible-xs visible-sm">
        <!-- Spacer -->
        <div class="m-b-2 visible-xs visible-sm clearfix"></div>
      </div>
    </div>
    <div class="row">
      <div class="panel">
        <div class="panel-body">
          <div class="table-responsive">
            <form class="panel-body" action="/devis" method="POST">
              @csrf
              <fieldset class="form-group">
                <label for="form-group-input-1">FirstName</label>
                <input type="text" name="firstname" class="form-control" id="form-group-input-1">
              </fieldset>
              <fieldset class="form-group">
                <label for="form-group-input-1">Lastname</label>
                <input type="text" name="lastname" class="form-control" id="form-group-input-1" >
              </fieldset>

              <button type="submit" class="btn btn-primary pull-right">Create</button>
            </form>
          </div>
        </div>
      </div>
    </div>
  </div>
@endsection

在路线文件夹中,我有这个

route::resource('devis','AdminController');
Route::post('/devis', 'AdminController@store');
Route::get('/devis/delete/{devis}', 'AdminController@destroy');

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

好吧,首先,有时您使用姓氏,有时您使用姓氏,并且验证器无法识别,因为它们是不同的名称。

第二,您没有看到任何错误,因为您尚未实现flash_message来查看会话内部的错误。

 $request->validate([
    'firstname' => 'required',
    'lastename' => 'required'
 ]);

 <input type="text" name="lastname" class="form-control" id="form-group-input-1" >

答案 1 :(得分:1)

实际上,通过如下所示的validate函数验证名称时,您会遇到命名问题: 应该是

$request->validate([
'firstname' => 'required',
'lastname' => 'required'
]);

代替:

 $request->validate([
'firstname' => 'required',
'lastename' => 'required'
 ]);

您使用的是lastename而不是lastname。 Validator方法实际上应该具有正确的索引,否则它将不会存储在数据库中。 希望会有所帮助。