Laravel 5.4 - Как сделать @section доходность до javascript загрузки - PullRequest
0 голосов
/ 16 января 2020

Я использую javascript для динамического создания формы, которая берет ответы из чата и добавляет их в форму. Форма существует в отдельном блейд-файле register.blade.php. Я дал форму на главной странице (index.blade.php), но @section('registration-form') уступает странице до чтения js. По этой причине ответы в чате никогда не попадают в форму.

register.blade.php содержит (пользовательскую) форму @section('registration-form'). Оттуда я хотел бы создать route::get('/index', 'CustomAuthController') в routes/web.php для хранения данных форм в моей базе данных. Любые идеи о том, как сделать эту работу?

Очень плохо знакомы с Laravel. Использование Laravel 5.4.

КОД:



layouts / app.blade. php

@include('includes.head')

<body>        
    @include('includes.navbar')
    <div class="container">
        @yield('content')
    </div>
    @include('includes.footer')
</body>



index.blade. php

@extends('layouts.app') 

@section('content')

<main>      
  <section class="row" >    

     <!------ a bunch of content here ----------->

     <!----- form yielded here -------->

         @yield('registration-form')

     <!--- form end ----->
     <!------ more content -------->
  </section>
</main>
@endsection

register.blade. php

@section('registration-form')

<div class="padding-32" id="signup-two">
<h4>Review and submit your information</h4>
<form  method="POST" action="{{ route('signup') }}">
  {{ csrf_field() }}

  <div class="form-group" id="fname">
   <label></label>
   <input name="fname"/>
  </div>

  <div class="form-group" id="email">
   <label></label>
   <input name="email"/>
  </div>
  <div class="form-group" id="password">
   <label></label>
   <input name="password"/>
  </div>
  <div class="form-group" id="BMI">
   <label></label>
   <input name="BMI"/>
  </div>
  <div class="form-group" id="height">
   <label></label>
   <input name="height"/>
  </div>
  <div class="form-group" id="weight">
   <label></label>
   <input name="weight"/>
  </div>
</form>

@endsection

Я пытался дать @section(registration-form) in app.blade.php the форма еще не загрузилась. Я также не мог понять, как создать маршрут и контроллер для этого. Код выглядел так:

layouts / app.blade. php

@include('includes.head')

  <body>

    @include('includes.navbar')
    <div class="container">
        @yield('content')
        @yield('registration-form')
    </div>
    @include('includes.footer')
  </body>
</html>

маршруты / сеть. php

Route::get('/index', function () {
  return view('registration-form', [
   'fname' => 'fname',
   'BMI' => 'BMI',
   'height' => 'height',
   'weight' => 'weight'
   ]);
});

1 Ответ

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

Javascript обычно загружается, когда dom готов.

Но вы хотите загрузить скрипт до того, как этот указанный c DOM (@yield (form)) элемент будет готов.

Таким образом, вы должны сделать что-то вроде "laravel загрузка просмотра с использованием ajax", вокруг уже есть несколько практических примеров. Как я могу вернуть представление из AJAX вызова в Laravel 5?

Вы хотите создать маршрутизатор для вызова Ajax, функцию контроллера для возврата частичного представления ( следовательно, @section ('form')). Позвоните на ajax после того, как необходимый код будет готов в вашем js. Затем добавьте вид к желаемому местоположению. Обойти это нелегко.

Возможно, вы захотите пересмотреть свой дизайн для всего, что вы пытаетесь выполнить sh прямо сейчас.

Для таких вещей, как манипулирование данными, вычисления и т. Д. c. Если они могут быть выполнены и проверены бэкэндом, просто отправьте их бэкэнду. Одной из распространенных ошибок является то, что Frontend пытается справиться с задачами Backend.

...