Как использовать js и css в подстраницах laravel 5 - PullRequest
1 голос
/ 22 октября 2019

Я работаю над созданием сайтов, использующих Laravel 5.5 и движок шаблонов для просмотра.

Он работает на большинстве браузеров, как настольных, так и мобильных. Но когда я делаю тестирование на старом мобильном Android, я получаю сообщение об ошибке. Я нигде не проверял в Google, но не смог найти никакого ответа.

Кажется, что представление лезвия, которое расширяет этот макет, не может прочитать функцию из макета шаблона. Он показывает ошибку «функция не определена», и даже для переменной, которую я объявил в шаблоне макета, все нечитаемо в представлении, расширяющем этот макет, даже в файле js.

layout.blade.php:

<script src="{{ asset('js/main.js') }}"></script>

<script type="text/javascript">
var main_url = "https://test.com";

function checkout(){
alert(0);
}
</script>

@yield('scripts')

page.blade.php:

@extends('layout')

@section('scripts')
<script type="text/javascript">
function buttonClick(){
checkout();
}
</script>
@endsection

main.js:

alert(main_url);

Итак, здесь есть только одна проблема, похоже на сценарии, которые я объявилна макете, не отображаются или что-то, если мы открываем его из старого мобильного браузера Android.

Функция извлечения, которую я вызываю на buttonClick внутри page.blade.php, показывает ошибку undefined, а также alert(main_url), который я вызываю для файла main.js, также отображается неопределенным.

Есть ли какие-либо предложения по моим проблемам?

Ответы [ 3 ]

1 голос
/ 22 октября 2019

@yield для загрузки содержимого, поэтому вы должны использовать stack и push для загрузки js и css .

макет.blade.php:

<script type="text/javascript">
var main_url = "https://test.com";

function checkout(){
alert(0);
}
</script>

@stack('scripts')

page.blade.php:

@push('scripts')
<script type="text/javascript">
function buttonClick(){
checkout();
}
</script>
@endpush

Проверить дополнительную информацию push stack

0 голосов
/ 22 октября 2019

Вот как работает JavaScript (и другие тоже). Браузер считывает код с сверху до снизу .

Поскольку вы поместили <script src="{{ asset('js/main.js') }}"></script> перед var main_url = "https://test.com";, конечно, main_url в js/main.js не определено.

Вам просто нужно знать о заказах.

<script type="text/javascript">
var main_url = "https://test.com";

function checkout(){
alert(0);
}
</script>

<script src="{{ asset('js/main.js') }}"></script>

О buttonClick показывает неопределенное, у нас нет подсказки, так как вы не публикуете свой код, где вы его называете.

0 голосов
/ 22 октября 2019

Может это вам поможет:

page.blade.php

@extends('layout')

@section('scripts')
@push
<script type="text/javascript">
function buttonClick(){
   checkout();
}
</script>
@endsection
...