簡體   English   中英

Laravel 表單:如何在不使用表單的情況下將隱藏信息傳遞給 controller

[英]Laravel Form: How to pass hidden information to controller without using form

我正在創建一個包含目錄、交易系統和自定義貨幣的網站(在 Laravel 中)。

我已經完全完成了目錄和自定義貨幣(至少到目前為止),它只是交易系統。 非常接近完成交易系統,除了件事一直阻礙我,盡管我認為它應該很簡單。

每個目錄項目都有一個唯一的 ID(在數據庫中稱為 uid),交易系統根據唯一的項目 ID 交易項目。

這是交易頁面供參考。 我有它,如果您單擊您想要或想要贈送的項目上的復選框,它會將您檢查的所有 uid 發送到一個數組中(注意:我有 2 個單獨的 arrays,一個用於提供項目,一個用於請求項目)。

但是我現在擁有它的方式是它根據表單輸入獲取每個 Item uid。 由於我不希望用戶能夠編輯項目的唯一 ID,因此我需要一種在后端執行此操作的方法。 我已經嘗試過研究,但我還沒有走得太遠。

我對 laravel 和作為一個整體制作網站有點陌生,所以我真的不知道如何 go 向前推進。 我想我將不得不使用 JavaScript,但我不知道如何使用 javascript 將信息發送到 controller。 我也聽說過編碼然后解碼值,但我也不知道該怎么做。

HTML 代碼(提供方):

@foreach (Auth::user()->inventory()->paginate(9999) as $itemb)
                        <form class="form-horizontal" method="POST" enctype="multipart/form-data" action="{{ route('trade.s', $user->id, [$itemb->uid]) }}">
                        {{ Form::token() }}
                        <?
                        $itembb = $itemb->item_id;
                        $item =  Item::whereid($itembb)->first();
                        $yoyo = $item->selling()->orderBy('price', 'asc')->first();
                        ?>
                        @if ($item->limited == '1')
                        @if ($item->rbp()->count() > 0)
                        <div class="col-md-4" style="margin-top: 8px;display: inline-block;padding-left: 10px;">
                        <a>
                            <div class="card-body h-100" style="padding-top: 0px;padding-bottom: 0px;padding-right: 0px;padding-left: 0px;">
                        <div class="card h-100" style="border-radius: 0px; width: 120px;">
                            <img style="object-fit:cover; width: 100%; height: 50px;" src="/public/uploads/catalog/{{$item->image}}">
                            <span class="badge badge-success limited">Limited</span>
                            <div class="card-body" style="padding-bottom: 10px;padding-right: 10px;padding-left: 10px;padding-top: 10px;">
                            <h6>{{$item->title}}</h6>
                            <img style="margin-bottom: 2px;" src="{{ asset('public/img/nau.png') }}"> {{number_format($item->rbpp)}}
                            </div>
                            <div class="card-footer" style="padding-bottom: 0px;padding-top: 10px;padding-right: 0px;padding-left: 10px;">
                                (Getting uid value for each item checked)<input type="checkbox" name="out_data[]" value="{{$itemb->uid}}"> <label>Trade?</label>
                            </div>
                     </div>
                    </div>
</a>
</div>
                        @else
                        
                        @endif
                        @else
                        
                        @endif
                        @endforeach
                    </div>

非常感謝任何幫助,(對不起,如果我的帖子很亂。請告訴我是否需要放置更多代碼示例。)

據我了解,您擔心人們會修改該項目的 UUID 並嘗試“出售”另一個沒有的項目。 如果是這種情況,您不應處理表單本身,而應處理后端的安全性。 那是:

  1. 接收待售商品 UUID(或商品數組)
  2. 。重要的! 檢查每個項目的 UUID 是否屬於該特定登錄用戶。
  3. 如果所有項目都屬於用戶 a) 如果它們都屬於用戶 - 將它們存儲在數據庫中作為該用戶的“銷售”。 b) 如果甚至一項不屬於用戶 - 返回驗證錯誤。 他們不應該能夠存儲他們沒有的待售物品。

從我閱讀的內容來看,您似乎正在跳過第 2 步。您可以在其中檢查從表單收到的 UUID。

將 html 表單更改為“不可更改”幾乎是不可能的,因此請根據您的限制工作,而不是反對他們。 :)

您可以為每個包含 uid 的項目包含一個隱藏的表單輸入嗎? 例如

<input type="hidden" name="uid" id="uid" value="{{ $item->uid }}">

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM