Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Всем здравствуйте, уважаемые форумчане!!!
Очень хочу обратиться к вам со следующей проблемой:
Относительно недавно начал изучать WEB-программирование (примерно с августа 2018 г.), в процессе чего случайно нашёл на каком-то сайте "beonmax.com/ru/" платные курсы по WEB-программированию от некоего "знатока" Сергея Никонова.
Здесь можно долго вдаваться в подробности что из себя представляют эти курсы (создание проекта "Киномонстр" (некоего подобия сайта "kinopoisk.ru") сначала в классическом виде (без использования фреймворков и прочих вспомогательных средств), затем с использованием фреймворка "Bootstrap", затем он создаёт БД "MySQL", подключает к нему свой проект....... и т.д... ).
Наконец автор доходит до "оживления" своего сайта с помощью PHP-фреймворка "CodeIgniter"! Слушал я его внимательно, слушал (повторяя всё за ним, естественно)... РАЗ не получилось всё то, что получилось у него, ДВА не получилось, а я стал интересоваться в чём дело и выяснил, что данный PHP-фреймворк-то, оказывается, бестолковый. Посоветовали мне, в общем, "Laravel".
На видеохостинге "Youtube.com" я нашёл видеоуроки по "laravel" (ссылка: "https://www.youtube.com/watch?v=oZGOnN7 … WHE-KCoNnE") от некоего очередного знатока (здесь это слово пишу без кавычек, так как последний меня пока не разочаровал).
Его методику я применил к своему "сырому" проекту и вот что у меня получилось:
Содержимое файла "web.php":
<?php
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
/* Route::get('/', function () {
return view('welcome');
}); */
Route::get('main.blade.php', 'IndexController@index')->name('main');
Route::get('films.blade.php', 'IndexController@films')->name('filmsShow');
Route::get('film/{id}', 'IndexController@film')->name('filmShow');
Route::get('serials.blade.php', 'IndexController@serials')->name('serialsShow');
Route::get('serial/{id}', 'IndexController@serial')->name('serialShow');
Содержимое файла "IndexController.php":
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Movie;
class IndexController extends Controller
{
public function index() {
$movies = Movie::all();
return view('main')->with(['movies' => $movies]);
}
public function films() {
$movies = Movie::all();
return view('films-content')->with(['movies' => $movies]);
}
public function film($id) {
$movie = Movie::all()->where('id', $id)->first();
return view('film-content')->with(['movie' => $movie]);
}
public function serials() {
$movies = Movie::all();
return view('serials-content')->with(['movies' => $movies]);
}
public function serial($id) {
$movie = Movie::all()->where('id', $id)->first();
return view('serial-content')->with(['movie' => $movie]);
}
}
Содержимое файла "main.blade.php" (ГЛАВНОЙ СТРАНИЦЫ моего учебного проекта):
@extends('layouts.index')
@section('content')
<h2>Новые фильмы</h2>
<hr>
<div class="row">
@foreach($movies as $movie)
@if($movie->category_id == 1)
<div class="films_block col-lg-3 col-md-3 col-sm-3 col-xs-6">
<a href=" {{ route('filmShow',['id'=>$movie->id]) }} " target="_blank"> <img src=" {{ $movie->poster }} " alt=" {{ $movie->name }} "> </a>
<div class="film_label"> {{ $movie->name }} </div>
</div>
@endif
@endforeach
</div>
<div class="margin-8"></div>
<h2>Новые сериалы</h2>
<hr>
<div class="row">
@foreach($movies as $movie)
@if($movie->category_id == 2)
<div class="films_block col-lg-3 col-md-3 col-sm-3 col-xs-6">
<a href=" {{ route('serialShow',['id'=>$movie->id]) }} " target="_blank"> <img src=" {{ $movie->poster }} " alt=" {{ $movie->name }} "> </a>
<div class="film_label"> {{ $movie->name }} </div>
</div>
@endif
@endforeach
</div>
<div class="margin-8"></div>
<a href="#"><h3>Актёр Том Хенкс поделился впечатлением о фестивале</h3></a>
<hr>
<p>
16 февраля в Лондоне состоялась 67-я церемония вручения наград Британской киноакадемии. Леонардо ДиКаприо, Брэд Питт, Анджелина Джоли, Кейт Бланшетт, Хелен Миррен, Эми Адамс, Кристиан Бэйл, Альфонсо Куарон и другие гости и победители премии — в нашем репортаже.
</p>
<a href="#" class="btn btn-warning pull-right">читать</a>
@endsection
Содержимое файла "index.blade.php" (страницы, В КОТОРУЮ ВЫНЕСЕНЫ ЧАСТИ "HEADER", "БОКОВАЯ ПАНЕЛЬ" и "FOOTER" моего учебного проекта):
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
<title>Киномонстер Bootstrap</title>
<link rel="shortcut icon" href=" {{ asset('img/favicon.ico') }} ">
<!-- Bootstrap -->
<link rel="stylesheet" href=" {{ asset('css/bootstrap.min.css') }} ">
<link rel="stylesheet" href=" {{ asset('css/style.css') }} ">
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body>
<div class="container-fluid">
<div class="row">
<nav role="navigation" class="navbar navbar-inverse">
<div class="container">
<div class="navbar-header header">
<div class="container">
<div class="row">
<div class="col-lg-12">
<h1><a href=" {{ route('main') }} " target="_blank">КиноМонстр</a></h1>
<p>Кино - наша страсть!</p>
</div>
</div>
</div>
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbarCollapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>
<div class="collapse navbar-collapse navbar-right" id="navbarCollapse">
<ul class="nav nav-pills">
<li class="active"> <a href=" {{ route('main') }} " target="_blank">Главная</a> </li>
<li> <a href=" {{ route('filmsShow') }} " target="_blank">Фильмы</a> </li>
<li> <a href=" {{ route('serialsShow') }} " target="_blank">Сериалы</a> </li>
<li> <a href="films-rating.html" target="_blank">Рейтинг фильмов</a> </li>
<li> <a href="serials-rating.html" target="_blank">Рейтинг сериалов</a> </li>
<li> <a href="contacts.html" target="_blank">Контакты</a> </li>
</ul>
</div>
</div>
</nav>
</div>
</div>
<div class="wrapper">
<div class="container">
<div class="row">
<div class="col-lg-9 col-lg-push-3">
<form action="#" role="search" class="visible-xs">
<div class="form-group">
<div class="input-group">
<input type="search" class="form-control input-lg" placeholder="Ваш запрос">
<div class="input-group-btn">
<button type="submit" class="btn btn-default btn-lg"><i class="glyphicon glyphicon-search"></i></button>
</div>
</div>
</div>
</form>
@yield('content')
</div>
<div class="col-lg-3 col-lg-pull-9">
<div class="panel panel-info hidden-xs">
<div class="panel-heading">
<div class="sidebar-header">Поиск</div>
</div>
<div class="panel-body">
<form action="#" role="search">
<div class="form-group">
<div class="input-group">
<input type="search" class="form-control input-lg" placeholder="Ваш запрос">
<div class="input-group-btn">
<button type="submit" class="btn btn-default btn-lg"><i class="glyphicon glyphicon-search"></i></button>
</div>
</div>
</div>
</form>
</div>
</div>
<div class="panel panel-info">
<div class="panel-heading">
<div class="sidebar-header">Вход</div>
</div>
<div class="panel-body">
<form action="#" role="form">
<div class="form-group">
<input type="text" class="form-control input-lg" placeholder="Логин">
</div>
<div class="form-group">
<input type="password" class="form-control input-lg" placeholder="Пароль">
</div>
<button type="submit" class="btn btn-warning pull-right">Вход</button>
</form>
</div>
</div>
<div class="panel panel-info">
<div class="panel-heading">
<div class="sidebar-header">Новости</div>
</div>
<div class="panel-body">
<p>31.02.2017</p>
<p>Мы запустили новый сервис</p>
</div>
</div>
<div class="panel panel-info">
<div class="panel-heading">
<div class="sidebar-header">Рейтинг фильмов</div>
</div>
<div class="panel-body">
<ul class="list-group">
@foreach($movies as $movie)
@if($movie->category_id == 1)
<li class="list-group-item list-group-warning">
<span class="badge"> {{ $movie->rating }} </span>
<a href=" {{ route('filmShow',['id'=>$movie->id]) }} " target="_blank"> {{ $movie->name }} </a>
</li>
@endif
@endforeach
<!--// <li class="list-group-item list-group-warning">
<span class="badge">7.590</span>
<a href="Matrix.html" target="_blank">Матрица: Революция</a>
</li>
<li class="list-group-item list-group-warning">
<span class="badge">7.726</span>
<a href="CloudAtlas.html" target="_blank">Облачный атлас</a>
</li>
<li class="list-group-item list-group-warning">
<span class="badge">7.813</span>
<a href="MadMax.html" target="_blank">Безумный Макс: Дорога ярости</a>
</li> //-->
</ul>
</div>
</div>
<div class="panel panel-info">
<div class="panel-heading">
<div class="sidebar-header">Рейтинг сериалов</div>
</div>
<div class="panel-body">
<ul class="list-group">
@foreach($movies as $movie)
@if($movie->category_id == 2)
<li class="list-group-item list-group-warning">
<span class="badge"> {{ $movie->rating }} </span>
<a href=" {{ route('filmShow',['id'=>$movie->id]) }} " target="_blank"> {{ $movie->name }} </a>
</li>
@endif
@endforeach
<!--// <li class="list-group-item list-group-warning">
<span class="badge">8.185</span>
<a href="SiliconValley.html" target="_blank">Силиконовая долина</a>
</li>
<li class="list-group-item list-group-warning">
<span class="badge">7.273</span>
<a href="TheWalkingDead.html" target="_blank">Ходячие мертвецы</a>
</li>
<li class="list-group-item list-group-warning">
<span class="badge">8.856</span>
<a href="BreakingBad.html" target="_blank">Во все тяжкие</a>
</li> //-->
</ul>
</div>
</div>
</div>
</div>
</div>
<div class="clear"></div>
</div>
<footer>
<div class="container">
<p class="text-center"> <a href="http://ru.wh-db.com">WH-DB.COM</a> </p>
</div>
</footer>
<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<!-- Include all compiled plugins (below), or include individual files as needed -->
<script src="assets/js/bootstrap.min.js"></script>
</body>
</html>
Содержимое файла "films-content.blade.php" (страницы С ФИЛЬМАМИ моего учебного проекта):
@extends('layouts.index')
@section('content')
<h1>Фильмы</h1>
<hr>
@foreach($movies as $movie)
@if($movie->category_id == 1)
<div class="row">
<div class="well clearfix">
<div class="col-lg-3 col-md-2 text-center">
<img class="img-thumbnail" src=" {{ $movie->poster }} " alt=" {{ $movie->name }} ">
<p> {{ $movie->name }} </p>
</div>
<div class="col-lg-9 col-md-10">
<p> {{ $movie->decsription }} </p>
</div>
<div class="col-lg-12">
<a href=" {{ route('filmShow',['id'=>$movie->id]) }} " target="_blank" class="btn btn-lg btn-warning pull-right">Подробнее</a>
</div>
</div>
</div>
@endif
@endforeach
<!--// <div class="row">
<div class="well clearfix">
<div class="col-lg-3 col-md-2 text-center">
<img class="img-thumbnail" src="assets/img/matrix.png" alt="Матрица: Революция">
<p>Матрица: Революция</p>
</div>
<div class="col-lg-9 col-md-10">
<p>
Пока армия Машин пытается уничтожить Зион, его жители из последних сил держат оборону. Но удастся ли им предотвратить полное вторжение в город кишащей орды беспощадных машин до того, как Нео соберет все свои силы и положит конец войне?
</p>
</div>
<div class="col-lg-12">
<a href="Matrix.html" target="_blank" class="btn btn-lg btn-warning pull-right">Подробнее</a>
</div>
</div>
</div>
<div class="row">
<div class="well clearfix">
<div class="col-lg-3 col-md-2 text-center">
<img class="img-thumbnail" src="assets/img/cloud.png" alt="Облачный атлас">
<p>Облачный атлас</p>
</div>
<div class="col-lg-9 col-md-10">
<p>
Шесть историй — пять реинкарнаций, происходящих в разное время, тесно переплетаются между собой…
</p>
</div>
<div class="col-lg-12">
<a href="CloudAtlas.html" target="_blank" class="btn btn-lg btn-warning pull-right">Подробнее</a>
</div>
</div>
</div>
<div class="row">
<div class="well clearfix">
<div class="col-lg-3 col-md-2 text-center">
<img class="img-thumbnail" src="assets/img/max.png" alt="Безумный Макс: Дорога ярости">
<p>Безумный Макс: Дорога ярости</p>
</div>
<div class="col-lg-9 col-md-10">
<p>
Преследуемый призраками беспокойного прошлого, Макс уверен, что лучший способ выжить — скитаться в одиночестве. Несмотря на это, он присоединяется к бунтарям, бегущим через всю пустыню на боевой фуре, под предводительством военачальника Фуриосы.
Они пытаются сбежать из Цитадели, страдающей от тирании Несмертного Джо, у которого они забрали кое-что очень ценное. Разъярённый военачальник бросает все свои силы на погоню за мятежниками, ступая на дорогу войны — дорогу ярости.
</p>
</div>
<div class="col-lg-12">
<a href="MadMax.html" target="_blank" class="btn btn-lg btn-warning pull-right">Подробнее</a>
</div>
</div>
</div> //-->
@endsection
Содержимое файла "film-content.blade.php" (страницы С ОДНИМ ИЗ ФИЛЬМОВ моего учебного проекта):
@extends('layouts.index')
@section('content')
<div class="row">
@if($movie->category_id == 1)
<h1> {{ $movie->name }} </h1>
<hr>
<div class="embed-responsive embed-responsive-16by9">
<iframe class="embed-responsive-item" src=" {{ $movie->player_code }} " frameborder="0" allowfullscreen></iframe>
</div>
<div class="well info-block text-center">
Год: <span class="badge"> {{ $movie->year }} </span>
Рейтинг: <span class="badge"> {{ $movie->rating }} </span>
Режиссёр(-ы): <span class="badge"> {{ $movie->producer }} </span>
</div>
<div class="margin-8"></div>
<h2>Описание фильма "{{ $movie->name }}" </h2>
<hr>
<div class="well">
<p> {{ $movie->description }} </p>
</div>
<div class="margin-8"></div>
<a href="#"><h3>Как снимали фильм "{{ $movie->name }}" </h3></a>
<hr>
<p>
<p>В качестве оператора был нанят Хойте Ван Хойтема, поскольку Уолли Пфистер был занят работой над своим режиссёрским дебютом «Превосходство».</p>
<p>«Интерстеллар» снят в сочетании анаморфной 35-мм плёнки и формата IMAX.</p>
<p>В январе 2013 года Кристофер Нолан начал переговоры с Paramount и Warner Bros., чтобы принять участие в проекте в качестве режиссёра. В марте его участие было утверждено. Съёмки проходили в последнем квартале 2013 года в провинции Альберта, Канада, в южной части Исландии, на леднике Снайфедльсйёкюдль и в деревне Киркьюбайярклёйстюр, а также в Лос-Анджелесе.</p>
<p>14 декабря 2013 года был выпущен первый тизер к фильму.</p>
<p>17 мая 2014 года вышел официальный трейлер к фильму.</p>
<p>30 июля 2014 года вышел второй официальный трейлер к фильму. Эксклюзивный просмотр был доступен исключительно на официальном сайте фильма после ввода секретной комбинации цифр, которую нужно было разгадать из созвездия в звёздном небе. Спустя сутки ролик стал доступен на YouTube.</p>
</p>
<a href="#" class="btn btn-warning pull-right">читать</a>
<div class="margin-8"></div>
<h2>Отзывы о фильме "{{ $movie->name }}" </h2>
<hr>
<div class="panel panel-info">
<div class="panel-heading"><i class="glyphicon glyphicon-user"></i><span>Сергей</span></div>
<div class="panel-body">Отличный фильм, 3 часа пролетели незаметно.</div>
</div>
<div class="panel panel-info">
<div class="panel-heading"><i class="glyphicon glyphicon-user"></i><span>Дмитрий</span></div>
<div class="panel-body">После фильма Начало, я с нетерпением ждал еще работ от Кристофера Нолана. Интерстеллар меня впечатлил</div>
</div>
<div class="panel panel-info">
<div class="panel-heading"><i class="glyphicon glyphicon-user"></i><span>Игорь</span></div>
<div class="panel-body">Котька Леночка - чудик!!))):-Р</div>
</div>
<form action="#">
<div class="form-group">
<input type="text" placeholder="Ваше имя" class="form-control input-lg">
</div>
<div class="form-group">
<textarea class="form-control"></textarea>
</div>
<button class="btn btn-lg btn-warning pull-right">Отправить</button>
</form>
@endif
</div>
@endsection
Содержимое файла "serials-content.blade.php" (страницы С СЕРИАЛАМИ моего учебного проекта):
@extends('layouts.index')
@section('content')
<h1>Сериалы</h1>
<hr>
@foreach($movies as $movie)
@if($movie->category_id == 2)
<div class="row">
<div class="well clearfix">
<div class="col-lg-3 col-md-2 text-center">
<img class="img-thumbnail" src=" {{ $movie->poster }} " alt=" {{ $movie->name }} ">
<p> {{ $movie->name }} </p>
</div>
<div class="col-lg-9 col-md-10">
<p> {{ $movie->decsription }} </p>
</div>
<div class="col-lg-12">
<a href=" {{ route('serialShow',['id'=>$movie->id]) }} " target="_blank" class="btn btn-lg btn-warning pull-right">Подробнее</a>
</div>
</div>
</div>
@endif
@endforeach
<!--// <div class="row">
<div class="well clearfix">
<div class="col-lg-3 col-md-2 text-center">
<img class="img-thumbnail" src="assets/img/matrix.png" alt="Матрица: Революция">
<p>Матрица: Революция</p>
</div>
<div class="col-lg-9 col-md-10">
<p>
Пока армия Машин пытается уничтожить Зион, его жители из последних сил держат оборону. Но удастся ли им предотвратить полное вторжение в город кишащей орды беспощадных машин до того, как Нео соберет все свои силы и положит конец войне?
</p>
</div>
<div class="col-lg-12">
<a href="Matrix.html" target="_blank" class="btn btn-lg btn-warning pull-right">Подробнее</a>
</div>
</div>
</div>
<div class="row">
<div class="well clearfix">
<div class="col-lg-3 col-md-2 text-center">
<img class="img-thumbnail" src="assets/img/cloud.png" alt="Облачный атлас">
<p>Облачный атлас</p>
</div>
<div class="col-lg-9 col-md-10">
<p>
Шесть историй — пять реинкарнаций, происходящих в разное время, тесно переплетаются между собой…
</p>
</div>
<div class="col-lg-12">
<a href="CloudAtlas.html" target="_blank" class="btn btn-lg btn-warning pull-right">Подробнее</a>
</div>
</div>
</div>
<div class="row">
<div class="well clearfix">
<div class="col-lg-3 col-md-2 text-center">
<img class="img-thumbnail" src="assets/img/max.png" alt="Безумный Макс: Дорога ярости">
<p>Безумный Макс: Дорога ярости</p>
</div>
<div class="col-lg-9 col-md-10">
<p>
Преследуемый призраками беспокойного прошлого, Макс уверен, что лучший способ выжить — скитаться в одиночестве. Несмотря на это, он присоединяется к бунтарям, бегущим через всю пустыню на боевой фуре, под предводительством военачальника Фуриосы.
Они пытаются сбежать из Цитадели, страдающей от тирании Несмертного Джо, у которого они забрали кое-что очень ценное. Разъярённый военачальник бросает все свои силы на погоню за мятежниками, ступая на дорогу войны — дорогу ярости.
</p>
</div>
<div class="col-lg-12">
<a href="MadMax.html" target="_blank" class="btn btn-lg btn-warning pull-right">Подробнее</a>
</div>
</div>
</div> //-->
@endsection
Содержимое файла "serial-content.blade.php" (страницы С ОДНИМ ИЗ СЕРИАЛОВ моего учебного проекта):
@extends('layouts.index')
@section('content')
<div class="row">
@if($movie->category_id == 2)
<h1> {{ $movie->name }} </h1>
<hr>
<div class="embed-responsive embed-responsive-16by9">
<iframe class="embed-responsive-item" src=" {{ $movie->player_code }} " frameborder="0" allowfullscreen></iframe>
</div>
<div class="well info-block text-center">
Год: <span class="badge"> {{ $movie->year }} </span>
Рейтинг: <span class="badge"> {{ $movie->rating }} </span>
Режиссёр(-ы): <span class="badge"> {{ $movie->producer }} </span>
</div>
<div class="margin-8"></div>
<h2>Описание сериала "{{ $movie->name }}" </h2>
<hr>
<div class="well">
<p> {{ $movie->description }} </p>
</div>
<div class="margin-8"></div>
<a href="#"><h3>Как снимали сериал "{{ $movie->name }}" </h3></a>
<hr>
<p>
<p>В качестве оператора был нанят Хойте Ван Хойтема, поскольку Уолли Пфистер был занят работой над своим режиссёрским дебютом «Превосходство».</p>
<p>«Интерстеллар» снят в сочетании анаморфной 35-мм плёнки и формата IMAX.</p>
<p>В январе 2013 года Кристофер Нолан начал переговоры с Paramount и Warner Bros., чтобы принять участие в проекте в качестве режиссёра. В марте его участие было утверждено. Съёмки проходили в последнем квартале 2013 года в провинции Альберта, Канада, в южной части Исландии, на леднике Снайфедльсйёкюдль и в деревне Киркьюбайярклёйстюр, а также в Лос-Анджелесе.</p>
<p>14 декабря 2013 года был выпущен первый тизер к фильму.</p>
<p>17 мая 2014 года вышел официальный трейлер к фильму.</p>
<p>30 июля 2014 года вышел второй официальный трейлер к фильму. Эксклюзивный просмотр был доступен исключительно на официальном сайте фильма после ввода секретной комбинации цифр, которую нужно было разгадать из созвездия в звёздном небе. Спустя сутки ролик стал доступен на YouTube.</p>
</p>
<a href="#" class="btn btn-warning pull-right">читать</a>
<div class="margin-8"></div>
<h2>Отзывы о сериале "{{ $movie->name }}" </h2>
<hr>
<div class="panel panel-info">
<div class="panel-heading"><i class="glyphicon glyphicon-user"></i><span>Сергей</span></div>
<div class="panel-body">Отличный сериал, 3 часа пролетели незаметно.</div>
</div>
<div class="panel panel-info">
<div class="panel-heading"><i class="glyphicon glyphicon-user"></i><span>Дмитрий</span></div>
<div class="panel-body">После сериалаа Начало, я с нетерпением ждал ещё работ от Кристофера Нолана. Интерстеллар меня впечатлил</div>
</div>
<div class="panel panel-info">
<div class="panel-heading"><i class="glyphicon glyphicon-user"></i><span>Игорь</span></div>
<div class="panel-body">Котька Леночка - чудик!!))):-Р</div>
</div>
<form action="#">
<div class="form-group">
<input type="text" placeholder="Ваше имя" class="form-control input-lg">
</div>
<div class="form-group">
<textarea class="form-control"></textarea>
</div>
<button class="btn btn-lg btn-warning pull-right">Отправить</button>
</form>
@endif
</div>
@endsection
При попытке перехода на страницы каждого фильма (и каждого сериала тоже) по соответствующим ссылкам у меня выскакивает следующая ошибка:
ErrorException (E_ERROR)
Undefined variable: movies (View: C:\xampp\htdocs\www\kinomonster.laravel\resources\views\layouts\index.blade.php) (View: C:\xampp\htdocs\www\kinomonster.laravel\resources\views\layouts\index.blade.php)
Я самостоятельно искал пытался устранить данную проблему, но у меня это не вышло к сожалению!
КАК УСТРАНИТЬ ЭТУ ПРОБЛЕМУ???
Не в сети
передавайте в представления $movies вот так
return view('main', ['movies' => $movies]);
и в каждом действии так
Не в сети
Можно с этого места поподробнее: где именно и какие именно данные мне необходимо поменять на указанные Вами?...
Не в сети
В контроллере в каждом действии передавайте в представление массив $movies
Не в сети
Я сделал как Вы сказали и тем не менее у меня ничего не вышло!
Как быть?
IndexController.php:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Movie;
class IndexController extends Controller
{
public function index() {
$movies = Movie::all();
return view('main')->with(['movies' => $movies]);
}
public function films() {
$movies = Movie::all();
return view('films-content')->with(['movies' => $movies]);
}
public function film($id) {
$movies = Movie::all()->where('id', $id)->first();
return view('film-content')->with(['movies' => $movies]);
}
public function serials() {
$movies = Movie::all();
return view('serials-content')->with(['movies' => $movies]);
}
public function serial($id) {
$movies = Movie::all()->where('id', $id)->first();
return view('serial-content')->with(['movies' => $movies]);
}
}
index.blade.php:
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
<title>Киномонстер Bootstrap</title>
<link rel="shortcut icon" href=" {{ asset('img/favicon.ico') }} ">
<!-- Bootstrap -->
<link rel="stylesheet" href=" {{ asset('css/bootstrap.min.css') }} ">
<link rel="stylesheet" href=" {{ asset('css/style.css') }} ">
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body>
<div class="container-fluid">
<div class="row">
<nav role="navigation" class="navbar navbar-inverse">
<div class="container">
<div class="navbar-header header">
<div class="container">
<div class="row">
<div class="col-lg-12">
<h1><a href=" {{ route('main') }} " target="_blank">КиноМонстр</a></h1>
<p>Кино - наша страсть!</p>
</div>
</div>
</div>
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbarCollapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>
<div class="collapse navbar-collapse navbar-right" id="navbarCollapse">
<ul class="nav nav-pills">
<li class="active"> <a href=" {{ route('main') }} " target="_blank">Главная</a> </li>
<li> <a href=" {{ route('filmsShow') }} " target="_blank">Фильмы</a> </li>
<li> <a href=" {{ route('serialsShow') }} " target="_blank">Сериалы</a> </li>
<li> <a href="films-rating.html" target="_blank">Рейтинг фильмов</a> </li>
<li> <a href="serials-rating.html" target="_blank">Рейтинг сериалов</a> </li>
<li> <a href="contacts.html" target="_blank">Контакты</a> </li>
</ul>
</div>
</div>
</nav>
</div>
</div>
<div class="wrapper">
<div class="container">
<div class="row">
<div class="col-lg-9 col-lg-push-3">
<form action="#" role="search" class="visible-xs">
<div class="form-group">
<div class="input-group">
<input type="search" class="form-control input-lg" placeholder="Ваш запрос">
<div class="input-group-btn">
<button type="submit" class="btn btn-default btn-lg"><i class="glyphicon glyphicon-search"></i></button>
</div>
</div>
</div>
</form>
@yield('content')
</div>
<div class="col-lg-3 col-lg-pull-9">
<div class="panel panel-info hidden-xs">
<div class="panel-heading">
<div class="sidebar-header">Поиск</div>
</div>
<div class="panel-body">
<form action="#" role="search">
<div class="form-group">
<div class="input-group">
<input type="search" class="form-control input-lg" placeholder="Ваш запрос">
<div class="input-group-btn">
<button type="submit" class="btn btn-default btn-lg"><i class="glyphicon glyphicon-search"></i></button>
</div>
</div>
</div>
</form>
</div>
</div>
<div class="panel panel-info">
<div class="panel-heading">
<div class="sidebar-header">Вход</div>
</div>
<div class="panel-body">
<form action="#" role="form">
<div class="form-group">
<input type="text" class="form-control input-lg" placeholder="Логин">
</div>
<div class="form-group">
<input type="password" class="form-control input-lg" placeholder="Пароль">
</div>
<button type="submit" class="btn btn-warning pull-right">Вход</button>
</form>
</div>
</div>
<div class="panel panel-info">
<div class="panel-heading">
<div class="sidebar-header">Новости</div>
</div>
<div class="panel-body">
<p>31.02.2017</p>
<p>Мы запустили новый сервис</p>
</div>
</div>
<div class="panel panel-info">
<div class="panel-heading">
<div class="sidebar-header">Рейтинг фильмов</div>
</div>
<div class="panel-body">
<ul class="list-group">
@foreach($movies as $movie)
@if($movie->category_id == 1)
<li class="list-group-item list-group-warning">
<span class="badge"> {{ $movie->rating }} </span>
<a href=" {{ route('filmShow',['id'=>$movie->id]) }} " target="_blank"> {{ $movie->name }} </a>
</li>
@endif
@endforeach
<!--// <li class="list-group-item list-group-warning">
<span class="badge">7.590</span>
<a href="Matrix.html" target="_blank">Матрица: Революция</a>
</li>
<li class="list-group-item list-group-warning">
<span class="badge">7.726</span>
<a href="CloudAtlas.html" target="_blank">Облачный атлас</a>
</li>
<li class="list-group-item list-group-warning">
<span class="badge">7.813</span>
<a href="MadMax.html" target="_blank">Безумный Макс: Дорога ярости</a>
</li> //-->
</ul>
</div>
</div>
<div class="panel panel-info">
<div class="panel-heading">
<div class="sidebar-header">Рейтинг сериалов</div>
</div>
<div class="panel-body">
<ul class="list-group">
@foreach($movies as $movie)
@if($movie->category_id == 2)
<li class="list-group-item list-group-warning">
<span class="badge"> {{ $movie->rating }} </span>
<a href=" {{ route('filmShow',['id'=>$movie->id]) }} " target="_blank"> {{ $movie->name }} </a>
</li>
@endif
@endforeach
<!--// <li class="list-group-item list-group-warning">
<span class="badge">8.185</span>
<a href="SiliconValley.html" target="_blank">Силиконовая долина</a>
</li>
<li class="list-group-item list-group-warning">
<span class="badge">7.273</span>
<a href="TheWalkingDead.html" target="_blank">Ходячие мертвецы</a>
</li>
<li class="list-group-item list-group-warning">
<span class="badge">8.856</span>
<a href="BreakingBad.html" target="_blank">Во все тяжкие</a>
</li> //-->
</ul>
</div>
</div>
</div>
</div>
</div>
<div class="clear"></div>
</div>
<footer>
<div class="container">
<p class="text-center"> <a href="http://ru.wh-db.com">WH-DB.COM</a> </p>
</div>
</footer>
<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<!-- Include all compiled plugins (below), or include individual files as needed -->
<script src="assets/js/bootstrap.min.js"></script>
</body>
</html>
films-content.blade.php:
@extends('layouts.index')
@section('content')
<h1>Фильмы</h1>
<hr>
@foreach($movies as $movie)
@if($movie->category_id == 1)
<div class="row">
<div class="well clearfix">
<div class="col-lg-3 col-md-2 text-center">
<img class="img-thumbnail" src=" {{ $movie->poster }} " alt=" {{ $movie->name }} ">
<p> {{ $movie->name }} </p>
</div>
<div class="col-lg-9 col-md-10">
<p> {{ $movie->decsription }} </p>
</div>
<div class="col-lg-12">
<a href=" {{ route('filmShow',['id'=>$movie->id]) }} " target="_blank" class="btn btn-lg btn-warning pull-right">Подробнее</a>
</div>
</div>
</div>
@endif
@endforeach
<!--// <div class="row">
<div class="well clearfix">
<div class="col-lg-3 col-md-2 text-center">
<img class="img-thumbnail" src="assets/img/matrix.png" alt="Матрица: Революция">
<p>Матрица: Революция</p>
</div>
<div class="col-lg-9 col-md-10">
<p>
Пока армия Машин пытается уничтожить Зион, его жители из последних сил держат оборону. Но удастся ли им предотвратить полное вторжение в город кишащей орды беспощадных машин до того, как Нео соберет все свои силы и положит конец войне?
</p>
</div>
<div class="col-lg-12">
<a href="Matrix.html" target="_blank" class="btn btn-lg btn-warning pull-right">Подробнее</a>
</div>
</div>
</div>
<div class="row">
<div class="well clearfix">
<div class="col-lg-3 col-md-2 text-center">
<img class="img-thumbnail" src="assets/img/cloud.png" alt="Облачный атлас">
<p>Облачный атлас</p>
</div>
<div class="col-lg-9 col-md-10">
<p>
Шесть историй — пять реинкарнаций, происходящих в разное время, тесно переплетаются между собой…
</p>
</div>
<div class="col-lg-12">
<a href="CloudAtlas.html" target="_blank" class="btn btn-lg btn-warning pull-right">Подробнее</a>
</div>
</div>
</div>
<div class="row">
<div class="well clearfix">
<div class="col-lg-3 col-md-2 text-center">
<img class="img-thumbnail" src="assets/img/max.png" alt="Безумный Макс: Дорога ярости">
<p>Безумный Макс: Дорога ярости</p>
</div>
<div class="col-lg-9 col-md-10">
<p>
Преследуемый призраками беспокойного прошлого, Макс уверен, что лучший способ выжить — скитаться в одиночестве. Несмотря на это, он присоединяется к бунтарям, бегущим через всю пустыню на боевой фуре, под предводительством военачальника Фуриосы.
Они пытаются сбежать из Цитадели, страдающей от тирании Несмертного Джо, у которого они забрали кое-что очень ценное. Разъярённый военачальник бросает все свои силы на погоню за мятежниками, ступая на дорогу войны — дорогу ярости.
</p>
</div>
<div class="col-lg-12">
<a href="MadMax.html" target="_blank" class="btn btn-lg btn-warning pull-right">Подробнее</a>
</div>
</div>
</div> //-->
@endsection
film-content.blade.php:
@extends('layouts.index')
@section('content')
<div class="row">
@if($movies->category_id == 1)
<h1> {{ $movies->name }} </h1>
<hr>
<div class="embed-responsive embed-responsive-16by9">
<iframe class="embed-responsive-item" src=" {{ $movies->player_code }} " frameborder="0" allowfullscreen></iframe>
</div>
<div class="well info-block text-center">
Год: <span class="badge"> {{ $movies->year }} </span>
Рейтинг: <span class="badge"> {{ $movies->rating }} </span>
Режиссёр(-ы): <span class="badge"> {{ $movies->producer }} </span>
</div>
<div class="margin-8"></div>
<h2>Описание фильма "{{ $movies->name }}" </h2>
<hr>
<div class="well">
<p> {{ $movies->description }} </p>
</div>
<div class="margin-8"></div>
<a href="#"><h3>Как снимали фильм "{{ $movies->name }}" </h3></a>
<hr>
<p>
<p>В качестве оператора был нанят Хойте Ван Хойтема, поскольку Уолли Пфистер был занят работой над своим режиссёрским дебютом «Превосходство».</p>
<p>«Интерстеллар» снят в сочетании анаморфной 35-мм плёнки и формата IMAX.</p>
<p>В январе 2013 года Кристофер Нолан начал переговоры с Paramount и Warner Bros., чтобы принять участие в проекте в качестве режиссёра. В марте его участие было утверждено. Съёмки проходили в последнем квартале 2013 года в провинции Альберта, Канада, в южной части Исландии, на леднике Снайфедльсйёкюдль и в деревне Киркьюбайярклёйстюр, а также в Лос-Анджелесе.</p>
<p>14 декабря 2013 года был выпущен первый тизер к фильму.</p>
<p>17 мая 2014 года вышел официальный трейлер к фильму.</p>
<p>30 июля 2014 года вышел второй официальный трейлер к фильму. Эксклюзивный просмотр был доступен исключительно на официальном сайте фильма после ввода секретной комбинации цифр, которую нужно было разгадать из созвездия в звёздном небе. Спустя сутки ролик стал доступен на YouTube.</p>
</p>
<a href="#" class="btn btn-warning pull-right">читать</a>
<div class="margin-8"></div>
<h2>Отзывы о фильме "{{ $movies->name }}" </h2>
<hr>
<div class="panel panel-info">
<div class="panel-heading"><i class="glyphicon glyphicon-user"></i><span>Сергей</span></div>
<div class="panel-body">Отличный фильм, 3 часа пролетели незаметно.</div>
</div>
<div class="panel panel-info">
<div class="panel-heading"><i class="glyphicon glyphicon-user"></i><span>Дмитрий</span></div>
<div class="panel-body">После фильма Начало, я с нетерпением ждал еще работ от Кристофера Нолана. Интерстеллар меня впечатлил</div>
</div>
<div class="panel panel-info">
<div class="panel-heading"><i class="glyphicon glyphicon-user"></i><span>Игорь</span></div>
<div class="panel-body">Котька Леночка - чудик!!))):-Р</div>
</div>
<form action="#">
<div class="form-group">
<input type="text" placeholder="Ваше имя" class="form-control input-lg">
</div>
<div class="form-group">
<textarea class="form-control"></textarea>
</div>
<button class="btn btn-lg btn-warning pull-right">Отправить</button>
</form>
@endif
</div>
@endsection
Изменено garrip91 (01.02.2019 16:36:56)
Не в сети
Попробуйте так в IndexController.php
return view('main', ['movies'=>$movies]);
или
return view('main')->with('movies', $movies);
Не в сети
Ни так, ни так не работает!
Не в сети
Покажите код модели Movie
Не в сети
Вы об этом?
@extends('layouts.index')
@section('content')
<div class="row">
@if($movie->category_id == 1)
<h1> {{ $movie->name }} </h1>
<hr>
<div class="embed-responsive embed-responsive-16by9">
<iframe class="embed-responsive-item" src=" {{ $movie->player_code }} " frameborder="0" allowfullscreen></iframe>
</div>
<div class="well info-block text-center">
Год: <span class="badge"> {{ $movie->year }} </span>
Рейтинг: <span class="badge"> {{ $movie->rating }} </span>
Режиссёр(-ы): <span class="badge"> {{ $movie->producer }} </span>
</div>
<div class="margin-8"></div>
<h2>Описание фильма "{{ $movie->name }}" </h2>
<hr>
<div class="well">
<p> {{ $movie->description }} </p>
</div>
<div class="margin-8"></div>
<a href="#"><h3>Как снимали фильм "{{ $movie->name }}" </h3></a>
<hr>
<p>
<p>В качестве оператора был нанят Хойте Ван Хойтема, поскольку Уолли Пфистер был занят работой над своим режиссёрским дебютом «Превосходство».</p>
<p>«Интерстеллар» снят в сочетании анаморфной 35-мм плёнки и формата IMAX.</p>
<p>В январе 2013 года Кристофер Нолан начал переговоры с Paramount и Warner Bros., чтобы принять участие в проекте в качестве режиссёра. В марте его участие было утверждено. Съёмки проходили в последнем квартале 2013 года в провинции Альберта, Канада, в южной части Исландии, на леднике Снайфедльсйёкюдль и в деревне Киркьюбайярклёйстюр, а также в Лос-Анджелесе.</p>
<p>14 декабря 2013 года был выпущен первый тизер к фильму.</p>
<p>17 мая 2014 года вышел официальный трейлер к фильму.</p>
<p>30 июля 2014 года вышел второй официальный трейлер к фильму. Эксклюзивный просмотр был доступен исключительно на официальном сайте фильма после ввода секретной комбинации цифр, которую нужно было разгадать из созвездия в звёздном небе. Спустя сутки ролик стал доступен на YouTube.</p>
</p>
<a href="#" class="btn btn-warning pull-right">читать</a>
<div class="margin-8"></div>
<h2>Отзывы о фильме "{{ $movie->name }}" </h2>
<hr>
<div class="panel panel-info">
<div class="panel-heading"><i class="glyphicon glyphicon-user"></i><span>Сергей</span></div>
<div class="panel-body">Отличный фильм, 3 часа пролетели незаметно.</div>
</div>
<div class="panel panel-info">
<div class="panel-heading"><i class="glyphicon glyphicon-user"></i><span>Дмитрий</span></div>
<div class="panel-body">После фильма Начало, я с нетерпением ждал еще работ от Кристофера Нолана. Интерстеллар меня впечатлил</div>
</div>
<div class="panel panel-info">
<div class="panel-heading"><i class="glyphicon glyphicon-user"></i><span>Игорь</span></div>
<div class="panel-body">Котька Леночка - чудик!!))):-Р</div>
</div>
<form action="#">
<div class="form-group">
<input type="text" placeholder="Ваше имя" class="form-control input-lg">
</div>
<div class="form-group">
<textarea class="form-control"></textarea>
</div>
<button class="btn btn-lg btn-warning pull-right">Отправить</button>
</form>
@endif
</div>
@endsection
Если нет, тогда я Вас не понимаю!
Не в сети
Дело в том, что Ларавел пытается найти переменную $movies при каждом рендеринге blade файла, а так как вы не передаёте его в каждой функции контроллера, то ее не существует. Тут два решения: либо вынести blade с переменной movies в отдельный файл и подключать его только там, где вам нужна данная переменная, либо сделать проверку внутри перед foreach :
@if(isset($movies))
@foreach ($movies as $movie)
...
@endforeach
@endif
Изменено maxifom (04.02.2019 11:58:22)
Не в сети
Здравствуйте! Спасибо Вам большое за то, что Вы отозвались!!!
А можно как-то более детально объяснить? Я просто только начал изучать данный фреймворк......
Не в сети
Что именно объяснить более детально?
Не в сети
Более детально объяснить как мне решить свою проблему
Не в сети
Ваш код index.blade.php ( файл в котором возникает ошибка )
<div class="panel-body">
<ul class="list-group">
@foreach($movies as $movie)
@if($movie->category_id == 1)
<li class="list-group-item list-group-warning">
<span class="badge"> {{ $movie->rating }} </span>
<a href=" {{ route('filmShow',['id'=>$movie->id]) }} " target="_blank"> {{ $movie->name }} </a>
</li>
@endif
@endforeach
Предлагаю на выбор 2 решения:
1 Путь: Если хотите оставить вывод $movies на каждой странице, которая наследует index.blade.php, передавайте переменную в View Composer https://laravel.com/docs/5.7/views#view-composers, в ViewServiceProvider в методе boot напишите
View::composer('*', function ($view) {
$view->with('movies', Movie::all()); //Вместо Movie::all() ваш код для получения фильмов из БД
});
это передаст в каждый view переменную $movies, и вы сможете вывести ее используя foreach, не меняя код index.blade.php
2 Путь: если переменная $movies нужна не везде, то можно добавить проверку перед @foreach($movies as $movie):
@if(isset($movies))
@foreach ($movies as $movie)
...
@endforeach
@endif
Также можно вынести данный фрагмент в отдельный файл и подключать его только там, где необходимо: например,
movies.blade.php:
@foreach($movies as $movie)
@if($movie->category_id == 1)
<li class="list-group-item list-group-warning">
<span class="badge"> {{ $movie->rating }} </span>
<a href=" {{ route('filmShow',['id'=>$movie->id]) }} " target="_blank"> {{ $movie->name }} </a>
</li>
@endif
а затем в нужных местах подключать его:
@include(movies) // Путь до файла movies.blade.php
Изменено maxifom (06.02.2019 21:29:17)
Не в сети
2-й путь мне очень понравился (Огромное спасибо за идею, кстати! Она мне помогла!!!)
Вы не могли бы помочь мне разобраться с авторизацией? Для данного фреймворка предусмотрена специальная cmd-команда " php artisan make:auth ", которая вносит ряд изменений в Проект, над которым я работаю (в частности, создаёт отдельную страницу для авторизации и регистрации). Может, это и к лучшему конечно... Но дело в том, что у меня на левой панели уже есть фрагмент кода для авторизации. Я мог бы как-нибудь именно свою авторизацию "оживить"? Если да, то как именно?... Не совершил ли я роковую ошибку, набрав эту cmd-команду?
Изменено garrip91 (06.02.2019 23:58:19)
Не в сети
Команда make:auth добавляет несколько путей в файл web.php для авторизации, а также копирует некоторые шаблоны в папку views/auth и welcome.blade.php, если у вас нет таких файлов, то ничего критичного не произошло
Для оживления можно просто ваш фрагмент для авторизации направить в пути из Auth::routes(); которые можно посмотреть командой php artisan route:list, а также в контроллерах в App\Http\Controllers\Auth...
Не в сети
Привет, тоже прохожу курсы Сергея Никонова.
Сейчас изучаю Laravel и Yii2, правда Laravel больше нравится.
Когда с авторизацией в laravel разбирался, очень помог этот мануал, хоть и на английском:
https://medium.com/@ceibaweb/laravel-au … 064b5b89e6
p.s. Сайт beonmax - это какой то левый сайт со старыми курсами, сам автор курсов Сергей Никонов везде указывает свой сайт https://fructcode.com, может по этому у тебя не получилось с кодингнитером, потому что там где ты изучал старые версии курсов Сергея.
Изменено ProGo (09.02.2019 02:07:54)
Не в сети
Я не знаю где и как он указывает ссылку на свои актуальные курсы.....
Ну ладно. У Вас получилось ПОЛНОСТЬЮ "оживить" свой проект "Киномонстр"?
Как я мог бы связаться с Вами?
Не в сети
Насчёт "Для оживления можно просто ваш фрагмент для авторизации направить в пути из Auth::routes(); которые можно посмотреть командой php artisan route:list, а также в контроллерах в App\Http\Controllers\Auth..." ...
Можно пошагово пояснить этот момент?
Не в сети
Да получилось оживить киномонстер на сайте fructcode. Вот тут полностью исходник лежит проекта киномонстер (справа вкладка файлы):
https://fructcode.com/ru/courses/codeig … inal-part/
Не в сети
Несовсем Вас понял конечно.... Этот Никонов laravel использует? Мне в это слабо верится!
Как я вообще могу связаться с Вами?
Не в сети
Ну а если прям вообще-вообще не хотите связываться со мной, то поясните мне, хотя бы, как "оживить" авторизацию с "Киномонстра" с помощью "laravel"
Не в сети