Как загрузить частичное представление после вставки AJAX как Flash-сообщение - PullRequest
0 голосов
/ 30 января 2019

У меня есть частичное представление в моей системе, которое я включаю во все мои представления, которое затем отображает любые флеш-сообщения, которые я мог бы получить от контроллера.Я только начал использовать jQuery и динамически вставлять записи в мою базу данных.

Весь сценарий работает (нашел его в другом месте и изменил его), я хочу изменить способ загрузки своих флеш-сообщений, я не хочу указывать их в моих файлах просмотра в разделе сценария, я хочу отправить их из моегоКонтроллер и загрузить мой частичный вид, как я делаю на других моих страницах.

часть моего сценария;

        $('#submit').click(function () {
            $.ajax({
                url: postURL,
                method: "POST",
                data: $('#add_name').serialize(),
                type: 'json',
                success: function (data) {
                    if (data.error) {
                        printErrorMsg(data.error);
                    } else {
                        i = 1;
                        $('.dynamic-added').remove();
                        $('#add_name')[0].reset();
                        $(".print-success-msg").find("ul").html('');
                        $(".print-success-msg").css('display', 'block');
                        $(".print-error-msg").css('display', 'none');
                        $(".print-success-msg").find("ul").append(
                            '<li>New Project Space has been added</li>');
                    }
                }
            });
        });


        function printErrorMsg(msg) {
            $(".print-error-msg").find("ul").html('');
            $(".print-error-msg").css('display', 'block');
            $(".print-success-msg").css('display', 'none');
            $.each(msg, function (key, value) {
                $(".print-error-msg").find("ul").append('<li>' + value + '</li>');
            });
        }

Часть контроллера

    if ($validator->passes()) {
        foreach ($request->input('label') as $key => $value) {
            Space::create([
                'label'=>$value,
                'user_id' => $user,
                'customer_id' =>$customer,
                'project_id' => $projectid,
                ]);
        }
        return response()->json(['success'=>'done']);
    }

    return response()->json(['error'=>$validator->errors()->all()]);

Часть части

@if ($message = Session::get('success'))
<div class="alertcontainer" id="alertcontainer">
<div class="alert alert-success alert-block">
    <button type="button" class="close" data-dismiss="alert">×</button>
        <strong>{{ $message }}</strong>
</div>
</div>

@endif

1 Ответ

0 голосов
/ 31 января 2019

Laravel имеет действительно классную функцию, позволяющую вам загружать частичное представление из контроллера в ваше представление через ajax.

Создайте частичное представление, назовем его частичным отображением.Поместите свои html, css и любые циклы с $variable и любыми <ul> s внутри в это представление и выньте его из функции успеха ajax.Затем вы можете просто позвонить своему частичному и отправить фактическое сообщение.

Назовите раздел частичного представления (скажем, 'messageContent'), который будет вызван контроллером.Частичное может по-прежнему загружать любые базовые представления или другие зависимости, но мы сосредоточимся на нужной области, messageContent

Частичное представление:

@extends('layouts.baseModal')

 @section('messageContent')
    // css, loops of data, etc go here
     @foreach($var as $v)
        <li>{{$v->somethingLikeNameOrmessage}}</li>
   // etc
 @stop

Контроллер:

$view = view('partialDisplay', compact('yourVar(s)'));

    $sections = $view->renderSections(); // returns an associative array of 'content', 'pageHeading' etc

    return $sections['messageContent']; // this will only return whats in the content section

Затем, в ajax , вы можете просто вставить весь вид вместе с форматированием и т. Д .:

success: function (html) {
       $("#yourMessageDiv").html(html);
 },
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...