ввод данных очищается после отправки данных с использованием работы laravel fram - PullRequest
1 голос
/ 10 июня 2019

У меня есть несколько соединений с базой данных, когда я проверяю название продукта, я отправляю сообщение product name is exist before для просмотра, и здесь появляется проблема.

Сообщение появилось в поле зрения, но все входные данные формы очищены.Как мне решить эту проблему, учитывая, что название продукта не существует.проверка выполняется правильно, и если обнаружена ошибка в проверке, она появляется нормально и ввод данных не очищается.это мой код контроллера.

public function add(Request $request)
{
    // start add
    if($request->isMethod('post'))
    {

        if(isset($_POST['add']))
        {
            // start validatio array
            $validationarray=$this->validate($request,[

                //'name'  =>'required|max:25|min:1|unique:mysql2.products,name|alpha',
                'name'  =>'required|alpha',
                'price' =>'required|numeric',

            ]);

            // check name is exist
            $query = dBHelper::isExist('mysql2','products','`status`=? AND `deleted` =? AND `name`=?',array(1,1,$validationarray['name']));
            if(!$query) {

                $product=new productModel();

                // start add
                $product->name = $request->input('name');
                $product->save();
                $add = $product->id;
                $poducten = new productEnModel();
                $poducten->id_product = $add;
                $poducten->name = $request->input('name');
                $poducten->price = $request->input('price');
                $poducten->save();
                $dataview['message'] = 'data addes';
            } else {
                $dataview['message'] = 'name is exist before';
            }
        }
    }

    $dataview['pagetitle']="add product geka";
    return view('productss.add',$dataview);
}

это мой взгляд

@extends('layout.header')
@section('content')

    @if(isset($message))
        {{$message}}
    @endif

    @if(count($errors)>0)
        <div class="alert alert-danger">
            <ul>
              @foreach($errors->all() as $error)
                  <li>{{$error}}</li>

                  @endforeach

            </ul>

        </div>
        @endif

    <form role="form"  action="add" method="post" enctype="multipart/form-data">
        {{csrf_field()}}
        <div class="box-body">
            <div class="form-group{{$errors->has('name')?'has-error':''}}">
                <label for="exampleInputEmail1">Employee Name</label>
                <input type="text" name="name" value="{{Request::old('name')}}" class="form-control" id="" placeholder="Enter Employee Name">
            </div>

            <div class="form-group">
                <label for="exampleInputEmail1">Email Address</label>
                <input type="text" name="price" value="{{Request::old('price')}}" class="form-control" id="" placeholder="Enter Employee Email Address">
            </div>
        </div>
        <!-- /.box-body -->
        <div class="box-footer">
            <button type="submit" name="add" class="btn btn-primary">Add</button>
        </div>
    </form>

@endsection

это мой маршрут

Route::get('/products/add',"produtController@add");
Route::post('/products/add',"produtController@add");

Ответы [ 2 ]

0 голосов
/ 10 июня 2019

Вы можете создать свою собственную функцию проверки, как показано ниже. Я думаю, это должно вам помочь.

Найден из https://laravel.com/docs/5.8/validation#custom-validation-rules -> Использование замыканий

$validationarray = $this->validate($request,
        [
            'name'  => [
                'required',
                'alpha',
                function ($attribute, $value, $fail) { 
                    //$attribute->input name, $value for that value.
                    //or your own way to collect data. then check.
                    //make your own condition.
                    if(true !=dBHelper::isExist('mysql2','products','`status`=? AND `deleted` =? AND `name`=?',array(1,1,$value))) {                        
                           $fail($attribute.' is failed custom rule. There have these named product.');
                    }
                },          
            ],
            'price' => [
                'required',
                'numeric',
            ]        
        ]);
0 голосов
/ 10 июня 2019

Первый способ, которым вы можете вызвать исключение проверки вручную. Здесь вы можете узнать, как вы можете выяснить.

Вторым способом (я рекомендую этот) вы можете создать пользовательское правило проверки .Кстати ваш метод контроллера будет чище.

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