Добавить / добавить Laravel шаблон лезвия к текущему виду, используя JavaScript - PullRequest
0 голосов
/ 03 марта 2020

Итак, у меня есть это:

item.blade.php (расположение: 'pages / components / item.blade. php')

<div>
 // some php logic
test
</div>

list.blade.php

// some laravel blade logic

<script>
    function onAddItem() {

// the code above doesn't work
        $.get("visitor.pages.service.html", function(data){
           $('#appends').append(data);
        });
      }
    }

</script>


<div>
  <button onclick="onAddItem()">add item</button>

  <div id="list">
    @include('pages.components.item', ['someVars'=> false]); //this displays OK
  </div>

</div>

Теперь, когда я хочу нажать на кнопку добавления элемента, он должен также добавить еще один pages.components.item шаблон внутри list (id) div.

Я уже попробовал ответы на эти сообщения:

Но оба ответа не работают.

Ответы [ 2 ]

1 голос
/ 03 марта 2020

Поскольку ответ указал , вы не можете этого сделать, так как blade-сервер обрабатывается на стороне сервера. Однако есть обходной путь, но он дорогой и подвержен уязвимостям: создайте пользовательские маршруты, которые при необходимости выводят нужные файлы blade-серверов.

In routes.php:

Route::get('/blades/{path_to_blade}', function($path_to_blade){
    return view($path_to_blade);
})->where('path_to_blade', '^[a-z0-9\_\-\.]+$');

Затем вы можете использовать ajax позвоните или как угодно, чтобы позвонить по запрошенному шаблону. Я использую jQuery в качестве демонстрации:

$.ajax({
    url: "/blades/template.path",
    cache: false,
    success: function(html){
        $("#element_in_which_to_insert").append(html);
    }
});

Вы также можете запросить шаблон в браузере: /blades/template.path. Но опять же: этот метод подвержен уязвимостям. Вместо этого вы должны использовать каркас внешнего интерфейса, такой как Vue или Angular.

0 голосов
/ 03 марта 2020

Вы должны использовать

function onAddInvoiceItem()

, а не

function addItem()

Поскольку вы называете это с onAddInvoiceItem() здесь:

<button onclick="onAddInvoiceItem()">add item</button>
...