Вид отображается некорректно. Laravel

В моем проекте Laravel у меня настроен маршрут для отображения страницы профиля для пользователя.

Route::get('{id}', ['as' => 'profile', 'uses' => 'UsersController@show']);

С этим маршрутом все отображается нормально. Однако я хочу изменить маршрут на

Route::get('profile/{id}', ['as' => 'profile', 'uses' => 'UsersController@show']);

Когда я делаю это и перехожу к my.app:8000/profile/1, мои css и html в порядке, но я получаю неработающую ссылку на изображение, и мой jquery больше не работает

Я тоже пробовал

Route::get('/profile/{id}', ['as' => 'profile', 'uses' => 'UsersController@show']);

Я использую src="{{URL::asset("images/users/xxxxxxx")}}" для загрузки своих изображений, а также jquery

Нет, где еще в моем файле маршрута у меня есть маршрут для profile/

Не уверен, что я могу сделать. Кто-нибудь знает решение этой проблемы?

редактировать:

вот мой html:

<!doctype html>
<html>
    <head>
    <meta charset="utf-8">
            <!--Main Style Sheet-->
            {{ HTML::style('css/style.css'); }}
            <!-- JQuery -->
            <script src="/jquery/jquery-1.11.0.js"></script>
</head>

<body class="main-body">
<!-- this image works now that i added the leading / -->
<img src="{{ URL::asset("/images/users/{$user->id}/profilePictures/176thumb-{$user->profilePicture->url}") }}" alt="{{ $user->first_name }} {{ $user->last_name }} Profile Picture" width="176" height="176">

<!-- the jQuery For this is not working -->
<ul class="list-grid">
    <li>
        <div class="profile-example">
            <div class="add-box"></div>
        </div>
    </li>

</ul>

<!-- Include woodmark. This is the jquery plugin that isn't working -->
<script src="/jquery/jquery.wookmark.js"></script>
<!--Woodmark settings-->  
<script type="text/javascript">
    (function ($){
      $(function() {
        var $handler = $('.list-grid li');

        $handler.wookmark({
            // Prepare layout options.
             align: 'center',
             autoResize: true,
             comparator: null,
             container: $('html'),
             direction: undefined,
             ignoreInactiveItems: true,
             itemWidth: 560,
             fillEmptySpace: false,
             flexibleWidth: true,
             offset: 8,
             onLayoutChanged: undefined,
             outerOffset: 0,
             possibleFilters: [],
             resizeDelay: 50,
             verticalOffset: undefined
        });
      });
    })(jQuery);
  </script>

</body>
</html>

person xslibx    schedule 28.01.2015    source источник


Ответы (2)


Я думаю, что это проблема с вашими путями JS / изображений, а не с Laravel. Похоже, вы используете относительные пути при включении jQuery / images, примерно так:

<script src="jquery/jquery.js>
<img src="img/image.jpg">

Когда вы вызываете ресурс таким образом, он будет искать http://example.com/img/image.jpg, если вы находитесь на корневом уровне, но если вы находитесь в /profile, он будет искать http://example.com/profile/img/image.jpg.

Если вы добавите косую черту впереди, путь всегда будет начинаться с корневого веб-сайта:

<script src="/jquery/jquery.js>
<img src="/img/image.jpg">

Если ваш CSS в порядке, я подозреваю, что вы уже используете для него абсолютный путь.

person mopo922    schedule 28.01.2015
comment
да, у меня это было как img / image.jpg и jquery / jquery.js. Я изменил его на /img/image.jpg и /jquery/jquery.js, но он все равно не загружается - person xslibx; 29.01.2015
comment
@xslibx Можете ли вы показать свой HTML, плз? В частности, части, в которые включаются ваши ресурсы, и укажите URL-адрес, с которого мы будем их видеть. - person mopo922; 29.01.2015

я использовал

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

вместо того

<script src="/jquery/jquery.js"></script>

и теперь все работает

person xslibx    schedule 28.01.2015