[英]Laravel 5 js is blocking by app.js
我在home.blade.php
使用了一個javascript,它擴展了layout/app.blade.php
@extend(layout.app)
當我在home.blade.php
擴展javascript停止工作時,我注釋掉了
app.blade.php
<script src="{{ asset('js/app.js') }}" defer></script>
然后javascript開始工作。 我不確定有什么問題可以幫助我解決這個問題。
home.blade.php
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
@if (Auth::user()->email=='admin@admin.com')
<div class="card-header">Reports</div>
<div class="card-body">
<a href="view-reports">View Report</a><br>
<a href="create-user">Create User</a>
</div>
</div>
@else
<div class="card-header">Report Form</div>
<div class="card-body">
@if (session('status'))
<div class="alert alert-success">
{{ session('status') }}
</div>
@endif
<!-- You are logged in! -->
@if(session()->has('message'))
<div class="alert alert-success">
{{ session()->get('message') }}
</div>
@endif
<form action="store" method="post">
<input type="hidden" name="name" value="{{Auth::user()->name}}">
<label for="check_log">Checked Logs </label><br>
<input type="radio" name="check_log" value="yes"> Yes
<input type="radio" name="check_log" value="no"> No<br><br>
<label for="verified_ticket"> Checked and Verified for pending tickets </label><br/>
<input type="radio" name="verified_ticket" value="yes"> Yes
<input type="radio" name="verified_ticket" value="no"> No<br><br>
<label for="ticket_found"> Found any ticket that can be done by you </label><br/>
<input type="radio" name="ticket_found" value="yes"> Yes
<input type="radio" name="ticket_found" value="no"> No<br><br>
<div id="box">
<label for="ticket_id"> Tickets done by you (INTERNAL Ticket ID'S) </label><br/>
<input type="text" name="ticket_id[]" id="name" class="name"><br/><br>
<label for="ticket_details"> what did you do</label><br/>
<input style="width: 65%; height: 100px;" type="text" name="ticket_details[]" width="200px" height="100px" value=""><br><br>
<label for="time"> Time Taken</label><br/>
<input type="text" name="time[]" id="name" class="name"><br/><br>
<div id="addmore">
<a href="#" id="add">Add More Input Field</a>
</div>
<br><br>
</div>
<label for="other_task"> Other Tasks (Should be specify what did you do and time taken for each task) </label><br/>
<input style="width: 65%; height: 100px;" type="" name="other_task" value=""><br><br>
<label for="shift_handoff"> Task/Alert that's needs attention from next shift/Dennis </label><br/>
<input style="width: 65%; height: 100px;" type="" name="shift_handoff" value=""><br><br>
<input type="checkbox" name="agree" value="agree"> I Agree<br><br>
<input type="hidden" name="_token" value="{{csrf_token()}}">
<input type="submit" name="submit" value="submit">
</form>
@endif
</div>
</div>
</div>
</div>
@endsection
@section('javascript')
<script type="text/javascript">
$(document).ready(function(){
$('#add').click(function(){
var inp = $('#box');
var i = $('input').size() + 1;
$('<div id="box' + i +'"><label for="ticket_id"> Ticket ID </label><br/><input type="text" name="ticket_id[]" id="name" class="name"><br/><br><label for="ticket_details[]"> what did you do</label><br/><input style="width: 65%; height: 100px;" type="text" name="ticket_details[]" width="200px" height="100px" value=""><br><br><label for="time"> Time Taken</label><br/><input type="text" name="time[]" id="name" class="name"><br><br><img src="Minus.png" width="32" height="32" border="0" align="top" class="add" id="remove" /><br><br> <div id="addmore"><a href="#" id="add">Add More Input Field</a></div><br><br></div>').appendTo(inp);
i++;
});
$('body').on('click','#remove',function(){
$(this).parent('div').remove();
});
});
</script>
@endsection
app.balde.php
<!DOCTYPE html>
<html lang="{{ app()->getLocale() }}">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- CSRF Token -->
<meta name="csrf-token" content="{{ csrf_token() }}">
<title>{{ config('app.name', 'Daily report') }}</title>
<!-- Scripts -->
<script src="{{ asset('js/app.js') }}" defer></script>
<!-- Fonts -->
<link rel="dns-prefetch" href="https://fonts.gstatic.com">
<link href="https://fonts.googleapis.com/css?family=Raleway:300,400,600" rel="stylesheet" type="text/css">
<!-- Styles -->
<link href="{{ asset('css/app.css') }}" rel="stylesheet">
</head>
<body>
<div id="app">
<nav class="navbar navbar-expand-md navbar-light navbar-laravel">
<div class="container">
<a class="navbar-brand" href="{{ url('/') }}">
{{ config('app.name', 'Laravel') }}
</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<!-- Left Side Of Navbar -->
<ul class="navbar-nav mr-auto">
</ul>
<!-- Right Side Of Navbar -->
<ul class="navbar-nav ml-auto">
<!-- Authentication Links -->
@guest
<li><a class="nav-link" href="{{ route('login') }}">{{ __('Login') }}</a></li>
<li><a class="nav-link" href="{{ route('register') }}">{{ __('Register') }}</a></li>
@else
<li class="nav-item dropdown">
<a id="navbarDropdown" class="nav-link dropdown-toggle" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" v-pre>
{{ Auth::user()->name }} <span class="caret"></span>
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<a class="dropdown-item" href="{{ route('logout') }}"
onclick="event.preventDefault();
document.getElementById('logout-form').submit();">
{{ __('Logout') }}
</a>
<form id="logout-form" action="{{ route('logout') }}" method="POST" style="display: none;">
@csrf
</form>
</div>
</li>
@endguest
</ul>
</div>
</div>
</nav>
<main class="py-4">
@yield('content')
<script src="{{ asset('js/app.js') }}"></script>
@yield('javascript')
</main>
</div>
</body>
</html>
您的app.blade.php應如下所示:
<!DOCTYPE html>
<html lang="{{ app()->getLocale() }}">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="csrf-token" content="{{ csrf_token() }}">
<title>{{ config('app.name', 'Test') }}</title>
<!-- Styles -->
<link href="{{ asset('css/app.css') }}" rel="stylesheet">
</head>
<body>
<div id="app">
@yield('content')
</div>
<!-- Scripts -->
<script src="{{ asset('js/app.js') }}"></script>
@yield('javascript');
</body>
</html>
以上是您的主要布局文件。 如果要在其他刀片文件中擴展它,您希望使用該布局文件並添加內容或其他JavaScript功能。
為了以一種很好的方式實現這一點,我們使用@yield('javascript')
關鍵字來添加javascript文件或函數。
因此,擴展此刀片文件的其他刀片文件應如下所示:
@extends('layouts.app')
@section('content')
// some content
@endsection
@section('javascript')
// your javascript
@endsection
首先,您要加載布局刀片文件,然后您可以將特定內容和javascript插入到使用關鍵字yield('xxx')
每個部分
看了你的源代碼后:
你正在home.blade.php中加載jquery這是不理想的,如果你想加載它你應該加載到你的主刀片php文件中。 但是如果你使用laravels默認的app.js
文件,你實際上不需要加載它。 默認的app.js
文件已經需要以下require('./bootstrap');
。 如果你沒有改變它,那個文件已經包含了jquery。
try {
window.$ = window.jQuery = require('jquery');
} catch (e) {}
因此,請檢查您的app.js
需要引導程序文件,如果是,則檢查引導程序文件是否包含jquery,您不需要在刀片文件中加載jquery。
因此,您應該在app.js
加載app.js
文件。 在底部加載它:
...
<script src="{{ asset('js/app.js') }}"></script>
@yield('javascript')
</body>
</html>
請參閱https://laravel.com/docs/5.6/blade#stacks
要將腳本添加到子視圖,您需要使用堆棧
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.