【问题标题】:laravel 4 - route makes javascript impossible to load from viewlaravel 4 - 路由使 JavaScript 无法从视图中加载
【发布时间】:2014-11-13 11:24:34
【问题描述】:

我的 localhost 使用 laravel 路由打开我的视图,它的工作原理:

http://localhost/view/stock/equipment

返回我的视图的 Laravel 4 路线:

Route::get('view/stock/equipment', array('uses'=>'App\Controllers\Stock\EquipmentController@getIndex'));

我的观点包含:

        {{ HTML::script('js-views/stock/equipment/bootstrap.js') }}

在我的 html 页面中显示为:

<script src="http://localhost/js-views/stock/equipment/bootstrap.js"></script>

但是 bootstrap.js 不会加载,当我查看使用 firebug 时,我发现它没有从正确的路径加载:

 GET http://localhost/view/stock/bootstrap.js   404 Not Found

我可以看到来自 laravel 路线的“视图/库存部分”。

在 Laravel 中正确设置了公共路径。

这怎么可能?

【问题讨论】:

  • 我注意到 GET 404 not found 是从 bootstrap.js 中调用的 - 所以我想我应该检查 bootstrap.js。

标签: javascript laravel-4 loading assets laravel-routing


【解决方案1】:

如果您在浏览器中转到http://localhost/js-views/stock/equipment/bootstrap.js,会发生什么?您应该会看到 javascript 文件。

为什么将 javascript 与库存设备一起存储?将它放在资产文件夹中不是更好吗?这就是我构建资产的方式(在laravel/public 下):

assets/
       css/
       img/
       js/

assets.php 配置文件中定义路径:

return array(
    'css' => '/assets/css',
    'img' => '/assets/img',
    'js' => '/assets/js'
);

然后使用辅助函数返回它们的 URL:

class Asset
{
    private static function getUrl($type, $file)
    {
        return URL::to(Config::get('assets.' . $type) . '/' . $file);
    }

    public static function css($file)
    {
        return self::getUrl('css', $file);
    }

    public static function img($file)
    {
        return self::getUrl('img', $file);
    }

    public static function js($file)
    {
        return self::getUrl('js', $file);
    }

}

所以要显示图像,我可以这样做:

HTML::image(Asset::img('logo/full.png'), "My website logo")

但我让 MaxCDN 为我托管 Bootstrap(代码来自 Bootstrap website):

<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">

<!-- Optional theme -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css">

<!-- Latest compiled and minified JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>

【讨论】:

  • 感谢您的回答希伯伦。 bootstrap.js 是我想在刀片视图中显示的 extjs 网格的 extjs 部分。 localhost/js-views/stock/equipment/bootstrap.js 这里打开 bootstrap.js 没问题。后来我发现 bootstrap 是从刀片视图加载的。我认为 bootstrap.js 中的某些部分(代码)与 laravel 路由冲突,然后抛出 404 错误...所以这似乎是一个不同的问题结束。
  • 这就是为什么将资产与路线混合是不明智的。正如我所说,我也使用 Bootstrap 框架,但我从 MaxCDN 获得它并带有我的答案中的链接,我自己没有托管它。
  • 谢谢希伯伦,你真的理解我的问题。解决了。您应该为此赚取 1K。
  • asset.php文件和assets类放在哪里..请说清楚
【解决方案2】:

将 javascript 文件保存到 /var/www/yourprojectname/public 文件夹/js

并使用&lt;script src="{{ asset('js/main.js') }}"&gt;&lt;/script&gt;

【讨论】:

    猜你喜欢
    • 2022-10-18
    • 1970-01-01
    • 1970-01-01
    • 2014-03-25
    • 1970-01-01
    • 2018-07-02
    • 1970-01-01
    • 1970-01-01
    • 2014-08-22
    相关资源
    最近更新 更多