首页 > 解决方案 > 通过发布路线发布数据 - 页面已过期

问题描述

我正在尝试使用 Laravel 将数据发布到我的数据库,但我似乎无法这样做。发布路由发送到过期页面。

这是路线

Route::post('/expenses', 'PropertyExpenseController@store')->middleware('auth');

这是渲染表单和处理表单的创建和存储函数。

public function create($id){
    $property = PropertyAdvert::where('id', $id)->first();
    return view('/pages/expenses/create', compact('property'));
  }

  public function store(Request $request){
    $PropertyExpenses = PropertyExpenses::create([
      "property_id"         => $request->property_id,
      "user_id"             => Auth::user()->id,
      "expenseDescription"  => $request->description,
      "cost"                => $request->amount,
      "date"                => $request->date,
      "category"            => $request->category
    ]);  

    return "Expense Log";
  }

这是加载表单的视图页面。所有数据都通过输入元素上的名称获取到控制器中。

<form method="POST" action="/expenses">
    <span name="property_id" class="text-muted">{{$property->id}}</span>
      <div class="row mt-4 justify-content-center">
        <div class="col-md-6">
          <label class="" for"description">Expense Description<label>
        </div>
      </div>
      <div class="row form-group justify-content-center">
        <div class="col-md-4">
          <input class="form-control " type="text" name="description">
        </div>
      </div>

      <div class="row mt-4 justify-content-center">
        <div class="col-md-6">
          <label for"amount">Amount<label>
        </div>
      </div>
      <div class="row form-group justify-content-center">
        <div class="col-md-4 input-group">
          <span class="input-group-addon mr-1 mt-1">€&lt;/span>
          <input class="form-control" type="text" name="amount">
        </div>
      </div>

      <div class="row mt-4 justify-content-center">
        <div class="col-md-6">
          <label for"category">Category<label>
        </div>
      </div>
      <div class="row form-group justify-content-center">
        <div class="col-md-4">
          <select class="form-control" id="category" name="category">
            <option>Mortgage Payment</option>
            <option>Maintainence</option>
            <option>Management Fee</option>
          </select>
        </div>
      </div>

      <div class="row mt-4 justify-content-center">
        <div class="col-md-6">
          <label for"description">Date<label>
        </div>
      </div>
      <div class="row form-group justify-content-center">
        <div class="col-md-4">
          <input class="form-control" type="date" name="date">
        </div>
      </div>
      <input type="submit" class="btn btn-primary" value="Log Expense">
    </form>

这是具有可填充数组的模型。

class PropertyExpense extends Model
{
    protected $fillable = ['property_id'. 'user_id', 'expenseDescription', 'cost', 'date', 'category'];

    public function property(){
        return $this->belongsTo('App\PropertyAdverts');
    }
}

标签: laraveleloquentbladelaravel-5.5

解决方案


在您的表单中,您需要一个 CSRF 令牌字段。

<input type="hidden" name="_token" value="{{ csrf_token() }}">

在这里阅读更多。


推荐阅读