【问题标题】:validation and submit form in db in laravel在 laravel 的 db 中验证并提交表单
【发布时间】:2017-11-24 14:54:45
【问题描述】:

我想在用户填写表格时将数据提交到数据库中。但它的行为很奇怪。

这是我的控制器功能:

      namespace App\Http\Controllers\PrivatePages;
      use App\Http\Controllers\Controller;
      use App\Http\Requests\Request\CreateProductRequest;
      /*use App\Productuse Illuminate\Support\ServiceProvider;*/
      use Illuminate\Support\Facades\View;
      use Illuminate\Support\Facades\DB;
      use App\Http\FormRequests;


    public function UpdateAdminProfile(CreateProductRequest $request){
    Product::StoreProductDetails($request);
  }

这是我定义功能的模型函数:

   namespace App;

   use App\Http\Requests\CreateProductRequest;
   use Illuminate\Database\Eloquent\Model;
   use App\Http\Controllers\PrivatePages;



  use  Illuminate\Http\Request;

public static function StoreProductDetails(CreateProductRequest $request)
{

        $saveproduct = new Product();
        $saveproduct->name = $request->get('name');
    $saveproduct->description = $request->get('description');
    $saveproduct->save();

}

这是我的请求文件:

<?php
     namespace App\Http\Requests\Request;
    use Illuminate\Foundation\Http\FormRequest;
    class CreateProductRequest extends FormRequest
 {
 /**
  * Determine if the user is authorized to make this request.
 *
 * @return bool
 */
public function authorize()
{
    return true;
}

/**
 * Get the validation rules that apply to the request.
 *
 * @return array
 */
public function rules()
{

    return [

        'name' => 'required',
        'description' => 'required',
        'contactinfo'=> 'required',

    ];

}



   public function messages()
   {
      return[
        'name.required' => 'Enter Name',
        'description.required' => 'Enter description',
        'contact.required' => 'Enter contact info',

    ];
    }
  }

我的表格

   @if (Session::has('success'))
   <div class="alert alert-success" role="alert" style="font-size: 18px;">
    <strong>Success: </strong>

    {{ Session::get('success') }}
 </div>
  @endif

       <form id="" method="post" class="form-horizontal" action="{{ 
      route('updateadminprofile')}}"enctype="multipart/form-data" >



      <div class="form-group">
      <label class="col-sm-4 control-label" for="userName"> Name</label>
      <div class="col-sm-5">
     <input type="text" class="form-control" id="name" name="name" 
      placeholder="name}"  value="name" />
     </div>
    </div>
   <div class="form-group">
   <label class="col-sm-4 control-label" for="userName"> Description</label>
   <div class="col-sm-5">
    <input type="text" class="form-control" id="description" 
   name="description" placeholder="Description}"  value="description" />
  </div>
  </div>
     <button  style="margin-left: 30%" type="submit" class="btn btn-primary" 
       name="signup" value="sumbmit" >Save</button>

没有报错

 jsut refreshes the page and no record is saving in db

为什么它会抛出一个错误,因为每件事看起来都很好?现在它只是刷新页面。甚至不会去表单中指定的路由

【问题讨论】:

  • 如果你dd($request);怎么办?
  • 在 dd 上它给了我这一行“CreateProductRequest {#177}”

标签: php laravel


【解决方案1】:

通过扩展 FormRequest 而不是 Request 将您的 CreateProductRequest 更改为以下内容

use Illuminate\Foundation\Http\FormRequest;

class CreateProductRequest extends FormRequest
{
public function rules()
{
    return [
        'name' => 'required',
        'description' => 'required',
        'contactinfo'=> 'required',
    ];
}

public function messages()
{
    return [
        'name.required' => 'Enter Name',
        'description.required' => 'Enter description',
        'contact.required' => 'Enter contact info',
    ];
}
}

希望这可行:)

【讨论】:

  • 你检查过你的数据库记录了吗??
  • 你能更新你修改后的代码吗?并确保您的模型和数据库表正确连接并正常工作。
  • 它现在应该可以工作了,更新后你的问题是什么??
  • 按照上面的代码。当我尝试使用表单记录中存在的按钮提交表单时,未保存在数据库中。事实上,它现在甚至不会去表单动作中指定的路由。单击提交浏览器的按钮只会刷新并保持在同一个表单上。
  • 在你的规则函数中重新运行之前尝试 dd($request->all()) 或 dd(Input::all())
【解决方案2】:

请试试这个:

public static function StoreProductDetails(CreateProductRequest $request)
{
    $saveproduct = new Product();
    $saveproduct->name = $request->get('name');
    $saveproduct->description = $request->get('description');
    $saveproduct->save();
}

并更改您的CreateProductRequest.php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class CreateProductRequest extends FormRequest
{
    public function rules()
    {
        return [
            'name' => 'required',
            'description' => 'required',
            'contactinfo'=> 'required',
        ];
    }

    public function messages()
    {
        return [
            'name.required' => 'Enter Name',
            'description.required' => 'Enter description',
            'contact.required' => 'Enter contact info',
        ];
    }
}

已编辑:您可以在视图中检查错误

@if ($errors->any())
    <div class="alert alert-danger">
        <ul>
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
@endif

【讨论】:

猜你喜欢
  • 2018-03-28
  • 1970-01-01
  • 2011-12-15
  • 2017-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-18
  • 2012-12-08
相关资源
最近更新 更多