2017-05-18 27 views
0

我正在創建一個網站,允許借出書籍,我有3個貸款選項是1周,2周和4周,當用戶點擊一本書,他們將被帶到一個詳細信息頁面,將顯示3個貸款選項,如果你點擊1周的貸款,你將被拿到一週的貸款頁面,在那裏你可以確認或取消貸款,頁面看起來像這樣不同的日期從不同的意見,以顯示在laravel數據庫

<?php 
use Carbon\Carbon; 
?> 

@extends('layouts.app') 


@section('content') 
<div class="container"> 

     <div class="panel panel-default"> 
      <div class="panel-heading"><h1>1 Week Loan</h1></div> 

      <div class="panel-body"> 
       <h4>You have attempted to loan out: </h4> 
       <h4>{{$book->title}}</h4> 
       <h4>By: {{$book->author}}</h4> 
       <br/> 
       <h4>To agree, press the confirm button, to cancel the loan press the cancel button and you will be returned to the home screen.</h4> 
       <br/> 

       <form action="{{url('loan')}}" method="POST"> 
         {{ csrf_field() }} 
         <input type="hidden" name="l_userid" value="{{ Auth::user()->userid }}" id="l_userid"> 
         <input type="hidden" name="l_f_name" value="{{ Auth::user()->f_name }}" id="l_f_name"> 
         <input type="hidden" name="l_l_name" value="{{ Auth::user()->l_name }}" id="l_l_name"> 
         <input type="hidden" name="l_bookid" value="{{$book->bookid}}" id="l_bookid"> 
         <input type="hidden" name="l_title" value="{{$book->title}}" id="l_title">  
         <input type="hidden" name="ddate" value="" id="ddate"> 

          <input type="submit" name="requaestbtn" value="Confirm"> 
         </form> 

       <a href="{{url('home')}}" class="btn btn-primary" role="button"> 
         Cancel</a> 
      </div> 
     </div> 

@endsection

每筆貸款頁

會有隱藏的輸入類型,將數據發送到合作ntroller,但我想'ddate'隱藏輸入從現在開始具有1周的價值,如果用戶在1周的貸款頁面上,則從現在開始2周後,如果他們在2周的貸款頁面等等,

這是功能我在我的控制器:

公共職能貸款($申請要求) {

$loan = new Loan(); 
    $loan->userid = $request->l_userid; 
    $loan->f_name = $request->l_f_name; 
    $loan->l_name = $request->l_l_name; 
    $loan->bookid = $request->l_bookid; 
    $loan->title = $request->l_title; 
    $loan->startdate = Carbon::now(); 
    $loan->duedate = $request->ddate 
    $loan->save(); 
    return view('home'); 
} 
+0

這是什麼問題? –

+0

對不起,我可以在隱藏的輸入中放入什麼:'ddate',以便它具有正確日期的值(從現在起7,14或28天(取決於它們當前處於哪個貸款視圖))我嘗試過使用碳封裝有幾種不同的方式,但我總是會得到一個錯誤,說'ddate'不能爲空 – Kajn

回答

0

好解決你的問題是,你可以將該值設置爲相應貸款期的週數的數字。在你的情況下,值是1,2和4.然後在控制器中,你可以根據你收到的貸款期數來產生一個日期。

但同時我必須警告你關於你正在追蹤的不良做法。您的表單可以由用戶編輯爲另一個人借書。永遠不要在表格中發送用戶信息,它可以由最終用戶編輯。請直接在控制器中使用當前登錄的用戶信息。

<form action="{{url('loan')}}" method="POST"> 
    {{ csrf_field() }} 
    <input type="hidden" name="l_bookid" value="{{$book->bookid}}" id="l_bookid"> 
    <input type="hidden" name="l_title" value="{{$book->title}}" id="l_title"> 
    <input type="hidden" name="ddate" value="1" id="ddate"> 
    <input type="submit" name="requaestbtn" value="Confirm"> 
</form> 

public function loan(Request $request) 
{ 
    $loanWeeks = min($request->ddate, 4); 

    $loan = new Loan(); 
    $loan->userid = auth()->user()->userid; 
    $loan->f_name = auth()->user()->f_name; 
    $loan->l_name = auth()->user()->l_name; 
    $loan->bookid = $request->l_bookid; 
    $loan->title = $request->l_title; 
    $loan->startdate = Carbon::now(); 
    $loan->duedate = Carbon::now()->addWeeks($loanWeeks); 
    $loan->save(); 

    return view('home'); 
} 

我還添加了一個小的檢查,以確保用戶只能出租這本書最多4周。如果您不添加此檢查,那麼最終用戶可以再次編輯該值,並藉助他們想要的時間長期借閱圖書。

0

可你只要把在視圖:

<input type="hidden" name="ddate" value="1" id="ddate"> 

,然後在控制器:

$loan->duedate = Carbon::now()->addWeeks($request->ddate); 
相關問題