Posted on 25 июня, 2020
PHP строгая типизация
В php функциях лучше избегать ситуаций когда функция принимает не пойми что, и возвращает не пойми что. Поэтому мы будем использовать строгую типизацию. К примеру у нас есть функция проверяющая какой-то id:
function checkId(string $id) : bool {...
мы явно задаем, что входной параметр у нас имеет тип string. А возвращает функция данные типа bool.
Posted on 16 июня, 2020
Аутентификация Laravel
Laravel содержит в себе практически готовую систему аутентификации. Развернуть ее можно командой:
php artisan make:auth
Эта команда сформирует шаблоны (view) для аутентификации. Они распологаются в папке auth. А также специальные контроллеры, которые содержатся в папке Auth, в разделе контроллеров.
Шаблоны аутентификации
login.blade.php — отвечает за отображение формы ввода пароля и логина
register.blade.php — отвечает за отображение формы регистрации.
password\reset.blade.php — страница сброса пароля
Как закрыть доступ к определенному разделу сайта?
Для того, чтобы дать доступ только зарегистрированным пользователям, нужно в маршрут добавить посредник ‘middleware’=>[‘web’,’auth’]
группа посредников web перед auth нужна для запуска механизма сессий, перед запуском механизма аутентификации (auth). Напомню, что посредники передают управление по цепочке. То есть сначала отработает посредник web. А затем он передаст управление посреднику auth.
Продолжим. К примеру мы хотим закрыть доступ в раздел profile. В маршруте этого раздела укажем:
Route::group(['prefix'=>'profile', 'middleware'=>['web','auth']], function() {...
Posted on 22 мая, 2020
MySql заполнение столбца таблицы данными из другой таблицы
Если вам нужен пример запроса то вот он:
UPDATE table_1, table_2
SET table_1.data_1 = table_2.date_2
WHERE table_1.data_1_1 = table_2.data_2_2
А теперь немного пояснения. В блоке UPDATE мы указываем название обеих таблиц. В блоке SET мы указываем в какое поле таблицы.1 мы будем записывать данные из таблицы.2 (и указываем из какого поля). В блоке WHERE мы указываем какие данные из какие данные из таблицы.1 должны соответствовать данным из таблицы.2
Posted on 14 мая, 2020
Выборка из 2х таблиц MySql
Выбрать однотипные данные из 2х таблиц, можно запросом
SELECT user, name FROM Customers UNION SELECT user, name FROM Employees;
Мы с помощью Union объединяем два запроса. В результате получим данные полей user и name из 2х таблиц Customers и Employees за исключением дублей. То есть если данные полностью совпадут, и результат попадет только одно совпадение.
Posted on 5 марта, 2020
Laravel создать модель, контроллер и миграцию одной командой
Модель миграцию и контроллер проще всего создать одной командой:
php artisan make:model MyModel -mcr
Posted on 5 марта, 2020
Добавить данные в seeds
Чтобы добавить данные в seeds нужно выполнить команду:
php artisan db:seed --class=НазваниеВашегоКласса
Posted on 4 марта, 2020
Хитрости адресации Laravel
При указании адреса в виде (view) типа:
{{ route('sale.update') }}
Мы указываем, что в файле роутинга есть путь /sale и метод (какого-то контроллера) который его обрабатывает update
При указании адреса в виде (view) типа:
{{ route('profile.sale.update') }}
Мы по факту указываем путь в файле роутинга (web). То есть наша запись означает что в каталоге web есть файл роутинга profile. В нем указан путь sale и метод который его обрабатывает update
При адресации в контроллере вида:
return view('home.welcome')
Мы указываем, что в папке views есть папка home и в ней файл вида welcome.blade.php
Posted on 29 января, 2020
Laravel контроллеры
Контроллеры — это посредники между запросом пользователя и БД
Создать контроллер можно с помощью команды консоли
php artisan make:controller FirstController
- Передача управления контроллеру. В файле роутов (обычно web.php) указываем адрес по которому отработает определенный контроллер и метод этого контроллера, который обработает данный запрос.
Route::get('about', 'FirstController@show');
При переходе по адресу www.site.ru/about отработает контроллер FirstController путем вызова метода show.
В контроллер можно передавать свои параметры, например id страницы
Route::get('page/{id}', 'FirstController@pageshow');
В этом случае в методе show контроллера FirstController должен быть обработчик этих параметров.
Один контроллер может обрабатывать несколько адресов, если для каждого адреса определить соответствующий метод в контроллере
Соответственно в контроллере заводим описанные методы
class FirstController extends Controller
{
public function show() {
}
public function pageshow($id) {
}
Именованные маршруты
С помощью именованных маршрутов можно удобно генерировать URL-адреса и делать переадресацию на определенный маршрут.
Вы можете задать имя маршрута, присоеденив метод name() к определению маршрута в файле роутов:
Route::get('user/profile', function () { // })->name('profile');
Posted on 29 января, 2020
Laravel каскадное удаление данных
Если в наших таблицах данные связаны по ключу, то необходимо настроить удаление и изменение данных в первичной таблице
$table->foreign('order_id')->references('id')->on('order')
->onUpdate('cascade')->onDelete('cascade');
Эта запись означает, что имеет поле order_id связанное с полем id в таблице order.
При изменении id в таблице order нужно каскадно изменить все значения order_id нашей страницы.
При удалении id в таблице order нужно каскадно удалить все строки с order_id принадлежащие этому id
Posted on 17 января, 2020
Bootstrap 4 выравнивание по горизонтали и вертикали содердимого блока
Для выравнивание по вертикали содержимого <div> служит класс
align-self-center
Для выравнивания по горизонтали содержимого <div> служит класс
text-center
