将字符串与输入的所选值分开

时间:2018-08-08 08:29:37

标签: php laravel laravel-5

我从选定的下拉值中有两个单独的字符串值。 喜欢

<label>Book ID</label><span class="required">*</span>
<select class="js-example-basic-single form-control" name="sel_Book">
    @foreach ($books as $data)                                       
        <option value="{{ $data->BookID }}-{{ $data->BookUnitPrice }}">{{ $data->BookName }} --- {{ $data->BookUnitPrice }}</option>                                                      
    @endforeach
</select>

因此在控制器中,该值从BookID-BookUnitPrice Book = Eng11 Eng11-500 UnitPrice = 500`中以sel_Bookdropdown. So I have to separate this value and set 的形式检索,例如and“。

代码块

$booksout -> Distributor = $request->input('sel_Distributor');
$booksout -> Book = $request->input('sel_Book');
return response()->json($request); 
$booksout -> UnitPrice =
$booksout -> Quantity = $request->input('DistQuantity');

4 个答案:

答案 0 :(得分:3)

这就是为什么您使用ID的原因。

将您选择的格式设置为:

<option value="{{ $data->BookID }}">
     {{ $data->BookName }} --- {{ $data->BookUnitPrice }}
</option> 

然后在获取它们时进入您的控制器:

下面的代码假定bookbookout模型具有所有字符串/数字字段:

$book_id = $request->input('sel_Book');
$book = Book::find($book_id);
if($book) {
   $booksout->Distributor = $book->Distributor->Name;
   $booksout->book = $book->BookName ;
   $booksout->UnitPrice = $book->BookUnitPrice
   $booksout->Quantity = $request->input('DistQuantity');
}

通过这种方式,您可以使用完整的book对象,而不必担心用户伪造了发送到服务器的数据。如果您希望依赖发布/获取请求中的价格,那么我可以通过欺骗价格将您的图书购买为0。

从不信任用户数据。始终尝试从您自己的受信任数据源中收集尽可能多的输入,而用户只能在其中提供产品ID和数量。

另一个说明,请考虑使用camelCase而不是StudlyCase。因此大多数程序员通常不使用$book->BookUnitPrice来使用$book->bookUnitPrice StudlyCase来解释类名。

答案 1 :(得分:1)

只需将其作为json有效内容发送

    <option value="{{ 
    json_encode([
               'book'=>$data->BookID, 
               'unitPrice' => $data->BookUnitPrice 
               ]}}">
   {{ $data->BookName }} --- {{ $data->BookUnitPrice }}</option>

因此,当您在后端获取它时,您将执行json_decode($request->input('sel_Book')),它将输出:

[  
   book=> someid, 
   unitPrice => someprice
]

答案 2 :(得分:0)

有两种方法可以实现此目的:

  1. 如果您使用ajax将数据发布到服务器,在这种情况下,请使用2 SQLPLUS userid/password@DB @script_path1.SQL SQLPLUS userid/password@DB @script_path2.SQL SQLPLUS userid/password@DB @script_path3.SQL SQLPLUS userid/password@DB @script_path4.SQL SQLPLUS userid/password@DB @script_path4.SQL 并在其中传递不同的值,您可以使用data-attribute或{ {1}}。

  2. 如果您使用的是表单提交,则在这种情况下,请使用唯一的分隔符(例如.attr()data())来分隔值,并在服务器端将值分隔并获得两个单独的组件。

答案 3 :(得分:0)

更好的方法是使用为值分配assign Book ID。但是,如果您不能使用它,则可以使用爆炸功能来拆分控制器中收到的值。

$array = explode("-",$request->input('sel_Book'));
$book_id = $array[0];
$price = $array[1];