входные значения не сохраняются в базе данных, но параметры читаются - PullRequest
0 голосов
/ 28 августа 2018

У меня есть это в моем клинке:

<div class="row">
                        <div class="col-sm-6">
                                <label for="name">Name</label>
                                <input class="form-control" type="text" id="name" name="name">
                        </div>
                        <div class="col-sm-6">
                                <label for="slug">Slug</label>
                                <input class="form-control" type="text" id="slug" name="slug"> 
                        </div>
                    </div>
                    <br>
                    <div class="row">
                        <div class="col-sm-6">
                            <label for="item_type">Item Type</label>
                                <select class="form-control" id="item_type" name="item_type">
                                    <option value="physical-goods">Physical Goods</option>
                                    <option value="digital-downloads">Digital Downloads</option>
                                    <option value="credits">Credits</option>
                                </select>
                        </div>
                        <div class="col-sm-6">
                            <label for="order_mode">Order Mode</label>
                                <select class="form-control" id="order_mode" name="order_mode">
                                    <option value="fcfs">First Come, First Serve</option>
                                    <option value="pre-selling">Pre-Selling</option>
                                    <option value="purchase-order">Purchase Order</option>
                                </select>
                        </div>
                    </div>
                    <br>
                    <div>
                        <label for="short_description">Short Description</label>
                        <textarea class="form-control" id="short_description" rows="2"></textarea>
                    </div>
                    <br>
                    <div>
                        <label for="description">Description</label>
                        <textarea class="form-control" id="description" rows="3"></textarea>
                    </div>

, и у меня есть это в моем ProductsController @ Store:

            $product = Product::firstorCreate([
            'name' => $request->input('name'),
            'slug' => $request->input('slug'),
            'item_type' => $request->get('item_type'),
            'order_mode' => $request->get('order_mode'),
            'short_description' => $request->input('short_description'),
            'description' => $request->input('description')
        ]);

моя проверка:

        $this->validate($request, [
        'name'              => '',
        'slug'              => '',
        'item_type'         => 'required',
        'order_mode'        => 'required',
        'short_description' => '',
        'description'       => ''
    ]);

и я получаю сообщение об ошибке, что имя и слаг обязательны, но я что-то набрал в имени и слаге. Когда я попытался удалить поле require, я получил ошибку, и она показала, что все мои входные данные: name, slug, краткое описание и описание - все пустые. Я проверил свой клинок и проверил его имя, так почему это происходит?

EDIT: Теперь у меня есть эта ошибка:

SQLSTATE [23000]: нарушение ограничения целостности: 1062 Повторяющаяся запись '' для ключа 'products_slug_unique' (SQL: вставить в products (name, slug, store_id, item_type, order_mode, short_description, description, created_by_id, uuid, updated_at, created_at) значения (,, 36bf3d40-8cb7-11e8-9f9e-5b6a2e94b49b, физические товары, fcfs, dfgdfgdfgdd, dfgdgdfgdfgdf, 36bc6160-8cb7-11e8-9381-8b8110d8adde, 4ba43e00-aaa2-11e8-ae40-8983e976b812, 2018-08-28 09:11:06, 2018-08-28 9:11:06))

потому что, когда я пытаюсь сохранить, имя и слаг не требуются, поэтому они сохраняются в базе данных, но проблема в том, что ничего не сохраняется. это пусто поэтому, когда я пытаюсь сохранить снова, это выдаст мне эту ошибку, потому что slug уникален

Ответы [ 5 ]

0 голосов
/ 28 августа 2018

Моя единственная проблема в том, что

<input class="form-control" type="text" id="slug" name="slug"> 

- мой код, и мне не хватает '/'

<input class="form-control" type="text" id="slug" name="slug"/> 

когда я добавил '/', это сработало:)

0 голосов
/ 28 августа 2018

Я вижу, есть 2 проблемы -

  1. Вы пропустили название текстового поля, принадлежащего короткому описанию и описанию. Если вы не предоставите имя, тогда может быть невозможно сформировать поля для доступа в PHP с определенным ключом.
  2. Проблема в написании правила проверки (второй параметр передан в проверке)

Согласно документации ваш код проверки должен быть таким -

$this->validate($request, [
   'item_type'         => 'required',
   'order_mode'        => 'required',
]);

Помещение только тех полей, которые необходимо проверить

0 голосов
/ 28 августа 2018

Я думаю, проблема в том, что вы приняли запрос. Пожалуйста, попробуйте это: -

$product = Product::firstorCreate([
    'name' => $request->name,
    'slug' => $request->slug,
    'item_type' => $request->item_type,
    'order_mode' => $request->order_mode,
    'short_description' => $request->short_description,
    'description' => $request->description
]);
0 голосов
/ 28 августа 2018
         you can  use this  

 {!! Form::open([ 'route' => ['ProductsController@Store '], 'method' => 'POST' ]) !!}

  //on Controller   

    public function ProductsController@Store($request){
    $this->validate($request, [
            'name'              => 'required',
            'slug'              => 'required',
            'item_type'         => 'required',
            'order_mode'        => 'required',
            'short_description' => 'required',
            'description'       => 'required'
        ]);

    $product = Product::firstorCreate([
        'name' => $request->name,
        'slug' => $request->slug,
        'item_type' => $request->item_type,
        'order_mode' => $request->order_mode,
        'short_description' => $request->short_description,
        'description' => $request->description
    ]);

    }
0 голосов
/ 28 августа 2018

Почему вы используете: ввод и получение?

'slug' => $request->input('slug'),
'item_type' => $request->get('item_type'),

Попробуйте dd ($ request-> all ()), чтобы увидеть, что на самом деле отправляет ваша форма.

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