четверг, 22 июня 2017 г.

Миникурс по Laravel. Урок 2.

Используемые методы:
with - вернуть переданный объект. Полезно при сцеплении методов в PHP 5.3.x.

asset - сгенерировать URL ко внешнему ресурсу (изображению и пр.).
$url = asset('img/photo.jpg');


Главная точка входа на сайт находится в папке public в файле index.php

Запрос пользователя передается маршрутизатору. Маршрутизатор состоит из отдельных маршрутов для конкретных запросов.
routes/web.php - маршрутизатор для обработки web-запросов.

Route::get('/', function () {
return view('welcome');
});


Как формируется маршрут?
Идет обращение к фасаду Route.
Фасад - класс-посредник, который предоставляет удобный и быстрый доступ к определенному другому классу, который описан в простанстве имен и в структуре, которого содержится необходимый нам функционал.

Здесь маршрут формируется, используя вызов метода get.
Get используется для создания маршрутов, которые будут обрабатывать запросы типа get.
Например, http://minilaravel.loc/add
В Laravel под запросом понимается вс то, что следует после домена: add или page/show

Маршруты формируются под определенный запрос или группу запросов.
Запрос может состоять из постоянной части и части, которая будет меняться: page/show/10
Это число - переменная или параметр запроса.

При формировании маршрута в качестве первого параметра при вызове метода get передается шаблон запроса, для которого формируется данный маршрут.
У нас в качестве шаблона передается обратный слеш.

Вторым аргументом передается функция, код которой будет выполнен, если данный маршрут будет выбран для обработки текущего запроса.
В коде данной функции возвращается вызов функции view. View возвращает отработку кокретного вида.
Интересующий вид передается первым аргументом при вызове функции-хелпера view.

\resources\views\welcome.blade.php

При обращении к конкретному виду мы указываем только имя файла без расширения blade.php


Сформируем собственный маршрут.
Route::get('page', function() {
return 'Hello world!';
});

Набираем: http://minilaravel.loc/page
Получаем: Hello world!

Не всегда удобно использовать функции в маршрутизаторе.

Мы можем указать имя метода контролера, который обработает текущий запрос.
Route::get('page', 'IndexController@index');

Синтаксис: имя контроллера, имя класса контроллера, разделитель @ и имя метода.

Запрос попадает в контроллер, а потом обращается к виду.

Здесь располагаются контроллеры: \app\Http\Controllers

Здесь мы можем создать контроллер вручную или через консоль.
Для этого:
Переходим в папку с проектом: w:\domains\minilaravel.loc
Обращаемся к консоли фреймворка: php artisan make:controller IndexController

Контроллеры описываются в пространстве имен App\Http\Controllers
use Illuminate\Http\Request; // доступ к классу Request, который представляет абстракцию отправляемого запроса пользователем

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class IndexController extends Controller
{
public function index() {
return 'Hello world!';
}
}


Перепишем функцию:
public function index() {
return view('page');
}

В каталоге \resources\views создаем page.blade.php

Расширение blade означает, что файл будет обрабатываться шаблонизатором blade.

Передадим в вид еще и значения какой-либо переменной.
В App\Http\Controllers\Index.Controller.php
class IndexController extends Controller
{
public function index() {
$message = 'Hello world!';
return view('page')->with('message', $message); // with() используется для добавления переменных в вид
}
}

В \resources\views\ page.blade.php
<h1>{{$message}}</h1>

Но загрузим в вид шаблон страницы, а в папку \public\css добавим стили.
Подключим стили:
<link href="{{ asset('css/bootstrap.min.css') }}" rel="stylesheet">
<link href="{{ asset('css/jumbotron.css') }}" rel="stylesheet">

assetфункция-хелпер для формирования пути к публичной директории нашего проекта.

Сформируем заголовок и текст:
public function index() {
$header = 'Hello world!';
$message = 'This is a template for a simple marketing or informational website. It includes a large callout called a jumbotron and three supporting pieces of content. Use it as a starting point to create something more unique.';
return view('page')->with(['message' => $message,'header' => $header]);
}

В \resources\views\ page.blade.php
<h1>{{$header}}</h1>
<p>{{$message}}</p>

Сделаем страницу pages основной при загрузке:
В routes/web.php

Route::get('/', 'IndexController@index');

1 комментарий:

  1. Можете мне объяснить почему у меня пишет

    Object not found!
    The requested URL was not found on this server. If you entered the URL manually please check your spelling and try again. и т.д.

    Хотя я сделал так как Вы учите! Где тут подводные камни?

    ОтветитьУдалить

Materialize-css. Футер

Сделаем футер и прижмем к низу страницы. Документация: https://materializecss.com/footer.html