developer tip

라 라벨 스타일 시트와 자바 스크립트가 기본 경로가 아닌 경우로드되지 않습니다.

copycodes 2020. 9. 2. 18:56
반응형

라 라벨 스타일 시트와 자바 스크립트가 기본 경로가 아닌 경우로드되지 않습니다.


좋아요.이게 정말 초보적인 문제라는 건 알지만 알아낼 수 없습니다. 이것은 라 라벨에 관한 질문입니다.

기본적으로 기본 레이아웃보기에 스타일 시트가 포함되어 있습니다. 나는 현재 다음과 같은 일반 CSS를 사용하여 연결하고 있습니다.

<link rel="stylesheet" href="css/app.css" />

/ about 과 같은 단일 레벨 경로에있을 때는 훌륭하게 작동 하지만 / about / me 와 같이 더 깊이 들어가면 작동을 멈 춥니 다 .

Chrome의 개발자 콘솔을 보면 다음 오류 중 일부가 표시됩니다 (더 깊은 경로에만 해당).

Resource interpreted as Stylesheet but transferred with MIME type text/html: "http://example.dev/about/css/app.css".

이제 분명히 "about"폴더에서 CSS를 찾고 있습니다. 물론 폴더는 전혀 아닙니다.

경로에 관계없이 자산에 대해 동일한 위치에 표시되기를 원합니다.


Laravel 4 및 5의 경우 :

<link rel="stylesheet" href="{{ URL::asset('assets/css/bootstrap.min.css') }}">

URL::assetproject/public/폴더에 링크 되므로 거기에 스크립트를 넣습니다.


참고 : 이를 위해 " 블레이드 템플릿 엔진 " 을 사용해야합니다 . 블레이드 파일은 .blade.php확장자를 사용합니다 .


라 라벨 4

이를 수행하는 더 좋고 올바른 방법

CSS 추가

HTML :: style은 프로젝트 / 공용 / 폴더에 링크됩니다.

{{ HTML::style('css/bootstrap.css') }}

JS 추가

HTML :: script는 프로젝트 / 공용 / 폴더에 연결됩니다.

{{ HTML::script('js/script.js') }}

자산에 상대 경로를 사용하고 있으며 절대 경로로 변경하면 모든 것이 작동합니다 ( "css"앞에 슬래시를 추가합니다.

<link rel="stylesheet" href="/css/app.css" />

Laravel 3을 사용하고 있다고 생각합니다. 그렇다면 CSS / JS 파일을 다음과 같은 공용 폴더에 넣으십시오.

public/css
public/js

블레이드 템플릿을 사용하여

{{ HTML::style('css/style.css'); }}
{{ HTML::script('js/jquery-1.8.2.min.js'); }}

Laravel 5 에서는
뷰에 js 파일을로드하는 두 가지 방법이 있습니다.
먼저 html 도우미를 사용하고 두 번째는 자산 도우미를 사용하는 것입니다.
html 도우미를 사용하려면 먼저 명령 줄을 통해이 패키지를 설치해야합니다.

composer require illuminate/html

그런 다음 다시 요청해야하므로 config / app.php로 이동하여이 행을 제공 업체 배열에 추가하십시오.

'Illuminate\Html\HtmlServiceProvider'

그런 다음 html 패키지의 별칭을 정의해야하므로 config / app.php의 별칭 배열로 이동하여 이것을 추가하십시오.

'Html'     => 'Illuminate\Html\HtmlFacade'

이제 html 도우미가 설치되었으므로 블레이드보기 파일에 다음과 같이 작성할 수 있습니다.

{!! Html::script('js/test.js') !!}

project_root / public / js / test.js에서 test.js 파일을 찾습니다.
////////////////////////////////////////////////// ////////////
html 도우미 대신 자산 도우미를 사용하려면 뷰 파일에 다음과 같이 sth를 작성해야합니다.

<script src="{{ URL::asset('test.js') }}"></script>

project_root / resources / assets / test.js에서 test.js 파일을 찾습니다.


{project} /application/routes.php 전에 경로 필터에 넣는 것이 좋습니다.

Route::filter('before', function()
{
    // Do stuff before every request to your application...    
    Asset::add('jquery', 'js/jquery-2.0.0.min.js');
    Asset::add('style', 'template/style.css');
    Asset::add('style2', 'css/style.css');

});

블레이드 템플릿 엔진 사용

{{ Asset::styles() }}
{{ Asset::scripts(); }}

이상에 laravel 관리 자산 문서


다음과 laravel 4같이 붙여 넣기 만하면됩니다 {{ URL::asset('/') }}.

  <link rel="stylesheet" href="{{ URL::asset('/') }}css/app.css" />.

다음의 경우에도 동일합니다.

  <script language="JavaScript" src="{{ URL::asset('/') }}js/jquery.js"></script>
  <img src="{{ URL::asset('/') }}img/image.gif">

믹스 도우미가있는 Laravel 5.4 :

<link href="{{ mix('/css/app.css') }}" rel="stylesheet">
<script src="{{ mix('/js/app.js') }}"> </script>

내 생각에 가장 좋은 방법은 HTML에 BASE 태그를 추가합니다.

<base href="/" target="_top">

따라서 다음과 같은 것을 사용할 필요가 없습니다.

{{ HTML::script('js/jquery/jquery-1.11.1.min.js'); }}

그냥 입력

<script src="js/jquery/jquery-1.11.1.min.js"></script>

당신의 관점에서 작동합니다.

이 방법은 RESTful URL 및 정적 리소스를 이미지, CSS, 스크립트로 처리합니다.


Vinsa는 당신이 추가해야 할 거의 맞았습니다.

<base href="{{URL::asset('/')}}" target="_top">

스크립트는 일반 경로로 이동해야합니다.

<script src="js/jquery/jquery-1.11.1.min.js"></script>

그 이유는 이미지 및 이미지 소스 또는 ajax 요청과 같은 상대 경로가있는 기타 항목이 기본 경로가 연결되지 않으면 제대로 작동하지 않기 때문입니다.


In Laravel 5.7, put your CSS or JS file into Public directory.

For CSS:

<link rel="stylesheet" href="{{ asset('bootstrap.min.css') }}">

For JS:

<script type="text/javascript" src="{{ asset('bootstrap.js') }}"></script>

If you do hard code it, you should probably use the full path (href="http://example.com/public/css/app.css"). However, this means you'll have to manually adjust the URLs for development and production.

An Alternative to the above solutions would be to use <link rel="stylesheet" href="URL::to_asset('css/app.css')" /> in Laravel 3 or <link rel="stylesheet" href="URL::asset('css/app.css')" /> in Laravel 4. This will allow you to write your HTML the way you want it, but also let Laravel generate the proper path for you in any environment.


Better way to use like,

<link rel="stylesheet" href="{{asset('assets/libraries/css/app.css')}}">

Suppose you have not renamed your public folder. Your css and js files are in css and js subfolders in public folder. Now your header will be :

<link rel="stylesheet" type="text/css" href="/public/css/icon.css"/>
<script type="text/javascript" src="/public/js/jquery.easyui.min.js"></script>

Just Add Another Issue:

If you want to remove /public from your project using .htaccess,

then you can use this, [Add public before /css inside asset()]

<link href="{{ asset('public/css/app.css') }}" rel="stylesheet">

[Sometimes, it is useful.]


For Laravel 4: {!! for a double curly brace { {
and for Laravel 5 & above version: you may replace {!! by {{ and !!} by }} in higher-end version

If you have placed JavaScript in a custom defined directory.
For instance, if your jQuery-2.2.0.min.js is placed under the directory resources/views/admin/plugins/js/ then from the *.blade.php you will be able to add at the end of the section as

<script src="{!! asset('resources/views/admin/plugins/js/jQuery-2.2.0.min.js') !!}"></script>

Since Higher-End version supports Lower-End version also and but not vice-versa


The better and correct way to do this:

<link rel="stylesheet" href="{{ asset('assets/css/bootstrap.min.css') }}">

In Laravel 5.8

<script src="{{asset('js/customPath1/customPath2/customjavascript.js')}}"></script>

just made the trick for me.


put your script file in public directory then use(for example for userFunctions.js)

<script type="text/javascript" src="{{asset('js/userFunctions.js')}}">

참고URL : https://stackoverflow.com/questions/15232600/laravel-stylesheets-and-javascript-dont-load-for-non-base-routes

반응형