Проблема отправить сообщение в базу данных в laravel - PullRequest
0 голосов
/ 13 января 2020

У меня есть две таблицы с именами курсов и эпизодов в моей базе данных

Я хочу отправить курс и эпизод в базу данных course_id является внешним ключом в Таблица эпизодов Я создаю форму с 2 эпизодами, и когда я пытаюсь отправить ее, она не работает, и просто отправляю курс, а не эпизод, здесь мой метод контроллера:

 public function SendToDB(Request $request)
    {
        $new_Course = new Course($this->Validatepost());
        $new_Course->user_id = 1;
        $new_Course->image = 'Pics/' . $this->UploadPic(request());
        $new_Course->save();
        $new_Course->tag()->attach(request('tag'));
        $courseID = $new_Course->id;
        $episode_number = request()->input('episodes_number');

        for ($x = 0; $x < $episode_number; $x++) {
            $new_Episode = new Episode($this->validateepisode($episode_number));
            $new_Episode->course_id = $courseID;
            $new_Episode->save();
            return redirect('/Admin/');

        }
    }

и методы проверки

private function Validatepost()
    {
        return request()->validate([
            'title' => 'required',
            'body' => 'required',
            'price' => 'required'

        ]);
    }
 private function validateepisode($id)
    {

        return request()->validate([
            'Episode_Title_' . $id => 'required',
            'Episode_Body_' . $id => 'required',

        ]);

    }

и мой фронт

@extends('Admin.layout')
@section('header')
    <script src="{{ asset('js/app.js') }}"></script>
    <script type="text/javascript" src="/tinymce/tinymce.min.js"></script>
    <script>
        tinymce.init({
            selector: '#mytextarea',
            skin: 'oxide-dark',
            content_css: 'dark'
        });

        function next() {
            document.getElementById("base-tab-2").className = "nav-link";
            document.getElementById('ProgressBar').style.width = "50%"
            $('#base-tab-2').trigger('click')
        }

        function prev() {
            document.getElementById('ProgressBar').style.width = "25%"
            $('#base-tab-1').trigger('click')
        }

        function finish() {
            document.getElementById("base-tab-3").className = "nav-link";
            document.getElementById('ProgressBar').style.width = "75%";
            var courseName = document.getElementById('title').value;
            var courseprice = document.getElementById('price').value;
            var episodeNumer = document.getElementById('episodes_number').value;
            document.getElementById('courseName').innerText = courseName;
            document.getElementById('coursePrice').innerText = courseprice;
            document.getElementById('courseNumber').innerText = episodeNumer;
            $('#base-tab-3').trigger('click')
        }

        function addepisode(number) {

            for (var i = 0; i < number; i++) {
                //////////////////////////////////////////
                var element = document.createElement("input");
                var label = document.createElement("Label");
                label.innerHTML = "تیتر";
                element.setAttribute("type", "text");
                element.setAttribute("name", "Episode_Title_" + i);
                element.setAttribute("class", "form-control");
                label.setAttribute("class", "col-lg-3 form-control-label ");
                var div = document.getElementById("test");
                div.appendChild(label);
                div.appendChild(element);
                /////////////////////////////////
                var body = document.createElement("textarea");
                var bodylabel = document.createElement("Label");
                bodylabel.innerHTML = "بدنه";
                body.setAttribute("id", "mytextarea");
                body.setAttribute("name", "Episode_Body_" + i);
                body.setAttribute("class", "form-control");
                bodylabel.setAttribute("class", "col-lg-3 form-control-label ");
                var div = document.getElementById("test");
                div.appendChild(bodylabel);
                div.appendChild(body);
            }
            next();
        }
    </script>
@endsection
@section('content')


    <div class="container-fluid">
        <!-- Begin Page Header-->
        <div class="row">
            <div class="page-header">
                <div class="d-flex align-items-center">
                    <h2 class="page-header-title">افزودن</h2>
                </div>
            </div>
        </div>
        <!-- End Page Header -->
        <div class="col-xl-12">
            <!-- Basic Tabs -->
            <div class="widget has-shadow">
                <div class="widget-header bordered no-actions d-flex align-items-center">
                    <h4>افزودن</h4>
                </div>
                <div class="widget-body sliding-tabs">
                    <div class="progress progress-lg mb-3">
                        <div class="progress-bar bg-info" id="ProgressBar" role="progressbar" style="width: 25%"
                             aria-valuenow="25" aria-valuemin="0" aria-valuemax="100">روند پیشرفت
                        </div>
                    </div>
                    <ul class="nav nav-tabs" id="example-one" role="tablist">

                        <li class="nav-item">
                            <a class="nav-link active" id="base-tab-1" data-toggle="tab" href="#tab-1"
                               onclick="document.getElementById('ProgressBar').style.width = '25%'" role="tab"
                               aria-controls="tab-1" aria-selected="true">مشخصات دوره</a>
                        </li>
                        <li class="nav-item ">
                            <a class="nav-link disabled" id="base-tab-2" data-toggle="tab" href="#tab-2"
                               onclick="document.getElementById('ProgressBar').style.width = '50%'" role="tab"
                               aria-controls="tab-2" aria-selected="false">مشخصات قسمت ها</a>
                        </li>
                        <li class="nav-item">
                            <a class="nav-link disabled" id="base-tab-3" data-toggle="tab" href="#tab-3"
                               onclick="document.getElementById('ProgressBar').style.width = '75%'" role="tab"
                               aria-controls="tab-3" aria-selected="false">بازبینی</a>
                        </li>
                    </ul>
                    <form class="form-horizontal" method="post" action="/Admin/Createnew" enctype="multipart/form-data">
                        @csrf
                        <div class="tab-content pt-3">
                            <div class="tab-pane fade show active" id="tab-1" role="tabpanel"
                                 aria-labelledby="base-tab-1">
                                <div class="widget-body">

                                    <div class="form-group row d-flex align-items-center mb-5 ">
                                        <label
                                            class="col-lg-3 form-control-label @error('title')  text-danger @enderror">تیتر</label>
                                        <div class="col-lg-9">
                                            <input type="text" id="title" name="title" value="{{old('title')}}"
                                                   class="form-control @error('title')  border border-danger @enderror">
                                        </div>
                                    </div>
                                    <div class="form-group row d-flex align-items-center mb-5 ">
                                        <label
                                            class="col-lg-3 form-control-label  @error('price')  text-danger @enderror">قیمت</label>
                                        <div class="col-lg-9">
                                            <input type="number" id="price" name="price" value="{{old('price')}}"
                                                   class="form-control  @error('price')  border border-danger @enderror">
                                        </div>
                                    </div>
                                    <div class="form-group row d-flex align-items-center mb-5 ">
                                        <label
                                            class="col-lg-3 form-control-label  @error('episodes_number')  text-danger @enderror">تعداد
                                            قسمت ها</label>
                                        <div class="col-lg-9">
                                            <input type="number" id="episodes_number" name="episodes_number"
                                                   value="{{old('episodes_number')}}"
                                                   class="form-control  @error('episodes_number')  border border-danger @enderror">
                                        </div>
                                    </div>
                                    <div class="form-group row d-flex align-items-center mb-5 ">
                                        <label
                                            class="col-lg-3 form-control-label @error('body')  text-danger @enderror">بدنه</label>
                                        <div class="col-lg-9">
                                    <textarea class="form-control @error('body')  border border-danger @enderror"
                                              name="body" id="mytextarea" rows="15">
                                        {{old('body')}}
                                    </textarea>
                                        </div>
                                    </div>
                                    <div class="form-group row mb-5">
                                        <label class="col-lg-3 form-control-label @error('tag')  text-danger @enderror">تگ
                                            ها</label>
                                        <div class="col-lg-9 select mb-3">
                                            <select name="tag[]"
                                                    class="custom-select form-control @error('tag')  border border-danger @enderror"
                                                    multiple>
                                                <option value="یک تگ را انتخاب کنید">یک تگ را انتخاب کنید</option>
                                                @foreach($tags as $tag)
                                                    <option value="{{$tag->id}}">{{$tag->name}}</option>
                                                @endforeach
                                            </select>
                                        </div>
                                    </div>
                                    <div class="form-group">
                                        <label for="exampleFormControlFile1">عکس</label>
                                        <input type="file" class="form-control-file" name="Pic"
                                               id="exampleFormControlFile1">
                                    </div>

                                    <div class="form-group">
                                        <button type="button"
                                                onclick="addepisode(document.getElementById('episodes_number').value)"
                                                class="btn btn-gradient-03 mr-1 mb-2">بعدی
                                        </button>
                                    </div>
                                </div>

                            </div>
                            <div class="tab-pane fade" id="tab-2" role="tabpanel" aria-labelledby="base-tab-2">
                                <div class="form-group row d-flex align-items-center mb-5 " id="test"></div>
                                <div class="form-group">
                                    <button type="button" onclick="prev()" class="btn btn-gradient-03 mr-1 mb-2">قبلی
                                    </button>
                                </div>
                                <div class="form-group">
                                    <button type="button" onclick="finish()" class="btn btn-gradient-03 mr-1 mb-2">بعدی
                                    </button>
                                </div>
                            </div>
                            <div class="tab-pane fade" id="tab-3" role="tabpanel" aria-labelledby="base-tab-3">
                                <div class="widget has-shadow">

                                    <div id="IconRightCollapseOne" class="card-body collapse show"
                                         data-parent="#accordion-icon-right" style="">
                                        <div class="form-group row mb-5">
                                            <div class="col-sm-3 form-control-label d-flex align-items-center">نام
                                                دوره
                                            </div>
                                            <div id="courseName" class="col-sm-8 form-control-plaintext"></div>
                                        </div>
                                        <div class="form-group row mb-5">
                                            <div class="col-sm-3 form-control-label d-flex align-items-center">قیمت
                                            </div>
                                            <div id="coursePrice" class="col-sm-8 form-control-plaintext"></div>
                                        </div>
                                        <div class="form-group row mb-5">
                                            <div class="col-sm-3 form-control-label d-flex align-items-center">تعداد
                                                قسمت ها
                                            </div>
                                            <div id="courseNumber" class="col-sm-8 form-control-plaintext"></div>
                                        </div>
                                    </div>
                                </div>
                                <div class="form-group">
                                    <button type="submit" class="btn btn-gradient-03 mr-1 mb-2">ارسال</button>
                                </div>
                            </div>

                        </div>
                    </form>
                </div>
            </div>
            <!-- End Basic Tabs -->
        </div>

    </div>
@endsection



Ответы [ 3 ]

1 голос
/ 13 января 2020
public function SendToDB(Request $request)
{
    $new_Course = new Course($this->Validatepost());
    $new_Course->user_id = 1;
    $new_Course->image = 'Pics/' . $this->UploadPic(request());
    $new_Course->save();
    $new_Course->tag()->attach(request('tag'));
    $courseID = $new_Course->id;
    $episode_number = request()->input('episodes_number');

    for ($x = 0; $x < $episode_number; $x++) {
        $new_Episode = new Episode($this->validateepisode($episode_number));
        $new_Episode->course_id = $courseID;
        $new_Episode->save();


    }
     return redirect('/Admin/');
}

возврат перенаправления ('/ Admin /'); команда должна быть концом функции. Не конец "для л oop"

0 голосов
/ 14 января 2020

я нашел свой awnser здесь мой новый код

 public function SendToDB(Request $request)
    {

        $new_Course = new Course($this->ValidateCourse());
        $new_Course->user_id = 1;
        $new_Course->image = 'Pics/' . $this->UploadPic(request());
        $new_Course->save();
        $new_Course->tag()->attach(request('tag'));
        $courseID = $new_Course->id;
        $episode_number = request()->input('episodes_number');
        for ($x = 0; $x < $episode_number; $x++) {
            $new_Episode = new Episode();
            $new_Episode->title = \request()->input('Episode_Title_'.$x);
            $new_Episode->body = \request()->input('Episode_Body_'.$x);
            $new_Episode->number = $x+1;
            $new_Episode->course_id = $courseID;
            $new_Episode->save();
        }
        return redirect('/Admin/');

    }
0 голосов
/ 13 января 2020

я обнаружил, что мой awnser

 $new_Course = new Course($this->Validatepost());
        $new_Course->user_id = 1;
        $new_Course->image = 'Pics/' . $this->UploadPic(request());
        $new_Course->save();
        $new_Course->tag()->attach(request('tag'));
        $courseID = $new_Course->id;
        $episode_number = request()->input('episodes_number');
        for ($x = 0; $x < $episode_number; $x++) {
            $new_Episode = new Episode();
            $new_Episode->title = \request()->input('Episode_Title_'.$x);
            $new_Episode->body = \request()->input('Episode_Body_'.$x);
            $new_Episode->number = $episode_number;
            $new_Episode->course_id = $courseID;
            $new_Episode->save();
        }
        return redirect('/Admin/');

    }

функция проверки возвращает true или false, и я должен заполнить эти данные кодом

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