#php #laravel
#php #laravel
Вопрос:
Мои файлы сохраняются в resources views layouts, как на рисунке ниже :
Код, который я использую, прост, описан ниже :
header.blade.php <h1>Header</h1>
footer.blade.php <h1>Footer</h1>
index.blade.php
@include('layouts.header')
@yield('center')
@include('layouts.footer')
allproducts.blade.php
@extends('layouts.index')
@section('center')
<h1>This is the center of the page</h1>
@endsection
в маршруте web.php
Route::get('Products', ["uses"=>"ProductsController@index"]);
в контроллере
<?php
namespace AppHttpControllers;
use AppModelsProduct;
use IlluminateSupportFacadesDB;
use IlluminateHttpRequest;
class ProductsController extends Controller
{
public function index()
{
return view("allproducts", compact("Products"));
}
}
У меня всегда есть эта ошибка: View [layout.index] не найден.
Я включил фотографию, чтобы показать, что мои файлы находятся на правильном пути.
Прочитав аналогичный вопрос и предлагаемые решения, заданные ранее по этой проблеме
- Представление, которое я включаю, существует в правильной папке.
- Файл в каталоге layouts.
- В allproducts.balde.php файл, который я написал
@extends('layout.index')
вместо@extends('layouts.index')
этого, как решенный какой-то вопрос.
Я потратил много времени, пытаясь решить эту проблему.
Я действительно ценю любую помощь
с уважением
Комментарии:
1. Посмотрите на ошибку, затем снова посмотрите на пункт 3. Вы все еще пропускаете
s
в концеlayout
. Обратите внимание, что у вас есть макет как в allproducts (для индекса), так и в index (для нижнего колонтитула)2. Спасибо за ваш ответ @aynber Я сделал то же самое, что вы упомянули. Но ошибка остается
View [layout.footer] not found.
3. Как я уже сказал, это точно такая же проблема.
layout
противlayouts
4. @anyber спасибо. даже это проблема не решена. добавьте
s
или удалите ту же проблему.5. Проверьте свой метод контроллера, в котором вы возвращаете ответ view — проверьте, нет ли там опечатки
Ответ №1:
@Donkarnash Я очистил представление с помощью команды, которую вы мне дали. Я не знаю, как, но проблема решена. Я проверил включенный файл, и все в коде в порядке. даже моя проблема решена, но я не понимаю, в чем именно заключалась проблема. Я попытался добавить s и удалить его, как упоминали ребята, но ошибка была той же. в противном случае большое вам спасибо. вы действительно мне помогаете
Laravel кэширует скомпилированные представления. Эти представления компилируются из блейд-файлов, которые создает разработчик.
Иногда, когда разработчик вносит некоторые незначительные изменения — например, в вашем случае вы просто добавили ‘s’ в макет, чтобы сделать его макеты — не улавливаются Laravel, скомпилированные представления не обновляются, т.Е. перекомпилируются и снова кэшируются.
Поэтому время от времени, когда вы получаете сообщение об ошибке, касающееся блейд-представлений, и даже после изменения / исправления ошибки, если вы все еще получаете то же сообщение об ошибке, вы должны очистить кэшированные представления, запустив из терминала
php artisan view:clear
Когда вы очищаете кэшированные представления, Laravel перекомпилирует представления из блейд-файлов, а затем кэширует их
Ответ №2:
Если у вас была опечатка в ваших представлениях, возможно, у вас есть опечатка в вашем файле маршрута
Комментарии:
1. Это то, о чем я думал. Но я не знал, как это исправить. Я много раз пытался изменить код, но всегда появлялась ошибка. Я также пытался удалить cache: очистить, но без какого-либо прогресса.
2. Попробуйте следовать данным. Вы начинаете с запроса get в своем браузере, чтобы он отправлялся в ваш файл веб-маршрутов, затем он переходит в ваш файл контроллера, убедитесь, что у вас есть правильный маршрут и правильный путь к представлению в контроллере
3. @paroCham в контроллере, что у меня есть
<?php namespace AppHttpControllers; use AppModelsProduct; use IlluminateSupportFacadesDB; use IlluminateHttpRequest; class ProductsController extends Controller { public function index() { return view("allproducts", compact("Products")); } }