Как распечатать или сохранить HTML-тег выбора с выбранным атрибутом на основе значений в PHP / Laravel? - PullRequest
0 голосов
/ 09 октября 2019

Я хочу напечатать следующий код с Laravel / PHP как HTML-код. но это всегда печатать value="cancelled">Cancelled! Как напечатать или сохранить следующий HTML-код в php / laravel?

    $row = Order::first();
    $csrf_token = csrf_token();
    echo '
    <form action="'.$row->update_url.'" method="post" class="form-inline">
        <input type="hidden" name="_method" value="PUT">
        <input type="hidden" name="_token" value="'.$csrf_token.'">
        <select name="status" id="status" onchange="this.form.submit()" class="form-control">
            <option '.$row->status == "pending" ? "selected" : " ".' value="pending">Pending</option>
            <option '.$row->status == "confirmed" ? "selected" : " ".' value="confirmed">Confirmed</option>
            <option '.$row->status == "shipped" ? "selected" : " ".' value="shipped">Shipped</option>
            <option '.$row->status == "delivered" ? "selected" : " ".' value="delivered">Delivered</option>
            <option '.$row->status == "returned" ? "selected" : " ".' value="returned">Returned</option>
            <option '.$row->status == "cancelled" ? "selected" : " ".' value="cancelled">Cancelled</option>
        </select>
    </form>';
    die();

моя главная цель - добавить один столбец в таблицы данных с помощью yajrabox.

                    <select name="status" id="status" class="form-control"        >
                        <option value="pending" {{$order->status == 'pending' ? 'selected' : ''}}>Pending</option>
                        <option value="confirmed" {{$order->status == 'confirmed' ? 'selected' : ''}}>Confirmed</option>
                        <option value="shipped" {{$order->status == 'shipped' ? 'selected' : ''}}>Shipped</option>
                        <option value="delivered" {{$order->status == 'delivered' ? 'selected' : ''}}>Delivered</option>
                        <option value="returned" {{$order->status == 'returned' ? 'selected' : ''}}>Returned</option>
                        <option value="cancelled" {{$order->status == 'cancelled' ? 'selected' : ''}}>Cancelled</option>
                    </select>

, где мой код yajra выглядитэто

            return \DataTables::of($data)
                    ->addIndexColumn()
                    ->addColumn('invoiceno', function($row){
                        return $field=  <<<EOT
                        <a href="$row->full_url" class="badge badge-danger">$row->invoice_no</a>
EOT;
                    })
                    ->addColumn('orderStatus',function($row){
                        $csrf_token = csrf_token();
                        return $field = '
                        <form action="'.$row->update_url.'" method="post" class="form-inline">
                            <input type="hidden" name="_method" value="PUT">
                            <input type="hidden" name="_token" value="'.$csrf_token.'">
                            <select name="status" id="status" onchange="this.form.submit()" class="form-control">
                                <option '.$row->status == "pending" ? "selected" : "".' value="pending">Pending</option>
                                <option '.$row->status == "confirmed" ? "selected" : "".' value="confirmed">Confirmed</option>
                                <option '.$row->status == "shipped" ? "selected" : "".' value="shipped">Shipped</option>
                                <option '.$row->status == "delivered" ? "selected" : "".' value="delivered">Delivered</option>
                                <option '.$row->status == "returned" ? "selected" : "".' value="returned">Returned</option>
                                <option '.$row->status == "cancelled" ? "selected" : "".' value="cancelled">Cancelled</option>
                            </select>
                        </form>';
                    })
                    ->rawColumns(['invoiceno', 'orderStatus'])                    })
                    ->make(true);

1 Ответ

1 голос
/ 09 октября 2019

Оператор конкатенации . имеет более высокий приоритет, чем троичный оператор, поэтому ваш код не выполняет то, о чем вы думаете. Замените строки следующим образом:

<option '.$row->status == "pending" ? "selected" : " ".' value="pending">Pending</option>

на такие строки:

<option ' . ($row->status == "pending" ? "selected" : " ") . ' value="pending">Pending</option>

В частности, обратите внимание на круглые скобки вокруг ($row->status == "pending" ? "selected" : " ")

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...