【问题标题】:Can't load AngularJs files from PUBLIC folder in Laravel 5无法从 Laravel 5 的 PUBLIC 文件夹加载 AngularJs 文件
【发布时间】:2016-11-12 11:52:22
【问题描述】:

我在引用 Laravel 的“公共”文件夹中的 angularJS 文件时遇到了麻烦。我的公用文件夹结构如下所示::

public

   -css

   -js

      -services

      -controllers

      -app.js

我的“index.php”文件位于“app/views”文件夹中当我转到我的应用程序主页http://localhost 时,浏览器会将我带到index.php 文件符合预期。

在我的“index.php”文件中,我想在“public/js”下引用我的 javascript 文件,然后在浏览器控制台中得到“GET http://localhost/js/app.js404(未找到)”,这意味着找不到那些文件。这些是我尝试将它们包含在“index.php”文件中的一些选项:

 1.   <script src="js/app.js"></script>

编辑:

 <script src="<?php echo asset('/js/app.js'); ?>">
<script src="<?= url('js/app.js') ?>">

  1. 我已尝试将 js/app.js 移动到文件夹资源或资源/视图。
  2. 我已尝试仅将 app.js 移动到资源/视图中

所有这些选项都找不到“公共”文件夹下的文件。 我不使用 BLADE

我的文件看起来像:

index.php

<!DOCTYPE html>
<html lang=eng>
<head>
<meta charset="UTF-8">
  <title>Welcome </title>

  <!-- CSS -->
  <link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.1.0/css/bootstrap.min.css"> <!-- load bootstrap via cdn -->
  <link rel="stylesheet" href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.min.css"> <!-- load fontawesome -->
  <style>
    body    { padding-top:30px; }
/*    form    { padding-bottom:20px; }
*/  </style>

  <!-- JS -->
  <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script>

    <script src="js/app.js">
    </script> <!-- load our application --><!-- load our application -->
</head>


<body   class="container" ng-app="user1App" ng-controller="mainController">

  <div class="user1"  ng-repeat="user1 in user1s">
    <h3> <small>{{ user1.name }} , {{ user1.email }}</small></h3>
    <p>{{ user1.phone_number }}</p>

  </div>

</body>
</html>

app.js

angular.module('user1App', [
]);

angular.module('user1App').controller('mainController', function($scope, $http, User1, $sce) {

$http.get('api/v1/jokes').success(function(data) { 

$scope.user1s = data; 

});
}

我的 config/view.php 看起来像

'paths' => [
    realpath(base_path('resources/views')),
],

有关我的代码的更多信息,请查看此处AngularJS won't display (parse) data that is delivered with $http.get in Laravel5

控制台出错:

GET http://localhost/js/app.js 404 (Not Found)

.htaccess

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>

请帮忙,我真的没有看到问题,无法在任何地方搜索。

谢谢

【问题讨论】:

    标签: javascript php angularjs laravel


    【解决方案1】:

    将您的文件留在public/js,然后像这样检索它:

    <script src="<?= url('js/app.js') ?>">
    

    你提到了做&lt;script src="{{ asset('/js/app.js') }}"&gt;,但它应该包含js/app.js而不是/js/app.js,如果你不使用刀片,显然用php标签替换{{ }}

    【讨论】:

    • 是的,您对 {{ }} 的看法是正确的。但是我已经尝试过您的建议,但同样的事情正在发生。如果我将所有 .js 文件放在 index.php 中的脚本中,它就可以工作。
    • 每次我得到这个 GET localhost/js/app.js 404 (Not Found) 。也许是公共目录。不是它正在搜索的那个。
    • 直接在浏览器中查看可以加载js吗?
    • 不确定您的意思?我可以加载 .js 的唯一方法是将 放入 index.php
    • 在浏览器地址栏中输入js位置,看看会发生什么。
    【解决方案2】:

    如果你不使用刀片

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

    它不起作用,因为'{{'是刀片的功能,所以你可以做的是:

      <script src="<?php echo asset('/js/app.js'); ?>">
    

    【讨论】:

    • 好的,我已经编辑了这个问题。试过
    猜你喜欢
    • 1970-01-01
    • 2018-06-21
    • 2017-03-03
    • 2015-09-26
    • 2017-03-25
    • 2018-11-30
    • 2022-10-14
    • 1970-01-01
    • 2017-09-05
    相关资源
    最近更新 更多