Ограничить дублирование в одном поле ввода - PullRequest
0 голосов
/ 02 февраля 2020

У меня есть этот код ниже для присвоения номеров некоторым прокатным тележкам (транспортным средствам). Я хочу, чтобы номера были разными для каждой корзины, то есть каждая корзина имеет свой уникальный номер. Как только номер корзины назначен, никакие другие корзины не могут иметь этот номер. Номер уникален для каждой тележки. Я не могу сделать это самостоятельно, любая помощь с вашей стороны будет высоко оценена. Заранее спасибо.

// Adding Meta field in the meta container admin shop_order pages //
if ( ! function_exists( 'mv_licence_fields_callback' ) )
{
function mv_licence_fields_callback()
{
    global $post;

    //get order details //
    $order_id=$_GET['post'];
    $order = wc_get_order( $order_id ); 
    // Iterating through each "line" items in the order //
    $order_count=count($order->get_items());
    echo '<div class="driver_licences">';
    $count=1;
    foreach ($order->get_items() as $item_id => $item_data) {
        $item_quantity = $item_data->get_quantity();
        for($i=1; $i<=$item_quantity; $i++){
            $driver_assigned_cart = get_post_meta( $post->ID, 'driver_cart'.$count, true ) ? get_post_meta( $post->ID, 'driver_cart'.$count, true ) : '';

            echo '
                <lable>Driver '.$count.' Licence</label>
            <div style="border-bottom:solid 2px #23282d;padding-bottom:13px;margin-bottom:20px;">
                <input type="file"  name="driver_licence'.$count.'">';
            // assign cart number here  
            echo '<lable>Driver '.$count.' assigned cart NO#</label>
            <input type="text"  name="driver_cart'.$count.'" value="'.$driver_assigned_cart.'">';

            echo '<img src="'.get_post_meta($post->ID, "driver_licence".$count, true).'" style="max-width:400px">';
            echo "<h5>Return Cart<h5>";
            if(get_post_meta($post->ID, "return_cart".$count, true)=='on'){
                echo "<span style='color:red;'>Cart Returned</span>";
            }else{
                echo '<input type="checkbox"  name="return_cart'.$count.'"> Check if this cart is returned'. get_post_meta($post->ID, "return_cart".$count, true);
            }
            echo '<input type="hidden" name="product_id'.$count.'" value="'.$item_data->get_product_id().'">';
            echo '</div>';
            $count++;
        }
    }

    echo '<input type="hidden" name="prod_count" value="'.($count - 1).'">';
    echo "</div>";  }  }

Ответы [ 2 ]

0 голосов
/ 02 февраля 2020

Вы можете использовать переменную $ i в качестве счетчика во втором l oop вместо определения новой переменной $ count, поэтому код будет следующим:

foreach ($order->get_items() as $item_id => $item_data) {
$item_quantity = $item_data->get_quantity();
for($i=1; $i<=$item_quantity; $i++){
    $driver_assigned_cart = get_post_meta( $post->ID, 'driver_cart'.$i, true ) ? get_post_meta( $post->ID, 'driver_cart'.$i, true ) : '';

    echo '
        <lable>Driver '.$i.' Licence</label>
    <div style="border-bottom:solid 2px #23282d;padding-bottom:13px;margin-bottom:20px;">
        <input type="file"  name="driver_licence'.$count.'">';

    echo '<lable>Driver '.$i.' assigned cart NO#</label>
    //this field is for cart number //
    <input type="text"  name="driver_cart'.$i.'" value="'.$driver_assigned_cart.'">';   
0 голосов
/ 02 февраля 2020

просто добавьте в конце l oop

$count++ 

, поэтому для каждого l oop оно увеличивается на единицу

или

 $count = rand(0,100);

если вы хотите сделать это случайным числом для каждого l oop

в вашем коде, это будет выглядеть следующим образом:

  $count=1;
 foreach ($order->get_items() as $item_id => $item_data) {
$item_quantity = $item_data->get_quantity();
for($i=1; $i<=$item_quantity; $i++){
$driver_assigned_cart = get_post_meta( $post->ID, 'driver_cart'.$count, 
true ) ? get_post_meta( $post->ID, 'driver_cart'.$count, true ) : '';

    echo '
        <lable>Driver '.$count.' Licence</label>
    <div style="border-bottom:solid 2px #23282d;padding-bottom:13px;margin-bottom:20px;">
        <input type="file"  name="driver_licence'.$count.'">';

    echo '<lable>Driver '.$count.' assigned cart NO#</label>
    //this field is for cart number //
    <input type="text"  name="driver_cart'.$count.'" 
value="'.$driver_assigned_cart.'">';  
$count++ 
//or 
//$count = rand(0,100); 
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...