🚀 Улучшенные директивы Blade!
Laravel 12 расширяет возможности Blade, добавляя удобные директивы для элементов формы:
✅
✅
✅
✅
📌 Пример:
Эти директивы делают шаблоны Blade чище и читабельнее!
📱 @dev_notes_ru
#Laravel #Blade
Laravel 12 расширяет возможности Blade, добавляя удобные директивы для элементов формы:
✅
@checked - устанавливает checked, если условие истинно.✅
@selected - устанавливает selected для выпадающих элементов✅
@readonly - Добавляет атрибут readonly✅
@required - Добавляет атрибут required📌 Пример:
<input type="checkbox" name="subscribe" @checked($user->subscribed)>
<select name="role">
<option value="admin" @selected($user->role === 'admin')>Admin</option>
</select>
<input type="text" name="username" @readonly($user->is_admin)>
<input type="email" name="email" @required($user->needs_verification)>
Эти директивы делают шаблоны Blade чище и читабельнее!
#Laravel #Blade
Please open Telegram to view this post
VIEW IN TELEGRAM
Если вы JavaScript программист и хотите получить представление об использовании TypeScript (первый шаг перед изучением подробностей), то эта статья для вас.
#TypeScript
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Вам когда-нибудь требовалось извлечь текст, находящийся между двумя строками? В Laravel есть метод
between, позволяющий сделать именно это #Laravel #String #tips
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
`MassPrunable`Если вы очищаете модели с помощью трейта
Prunable и не используете события модели, воспользуйтесь трейтом MassPrunable, чтобы очистить их с помощью одного запроса. Это гораздо эффективнее #Laravel #Eloquent #tips
Please open Telegram to view this post
VIEW IN TELEGRAM
При использовании API запрос может завершиться ошибкой. Хотя можно вручную проверять и выбрасывать исключения, Laravel поставляется с удобными хелперами, позволяющими делать именно это
#Laravel #API #tips
Please open Telegram to view this post
VIEW IN TELEGRAM
Синие ссылки с подчёркиванием — хороший стиль по умолчанию для ссылок в основном тексте, но он выглядит чересчур резко. Возможно, мы можем его немного смягчить и сделать более гибким.
Иногда я не могу решить, как должна выглядеть идеальная ссылка в тексте. Она должна быть очевидной, но в то же время должна быть оформлена не настолько интенсивно, чтобы отвлекать от чтения текста. В целом мне нравится идея, что ссылки должны быть синими и подчёркнутыми, так как это наиболее близко к привычному виду ссылок по умолчанию, но я гибко подхожу к этому вопросу. Ссылки, имеющие «фирменный» цвет и отличающиеся от цвета текста, кажутся прекрасными, особенно если они тоже подчёркнуты.
#Frontend #CSS
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2🔥2👍1
Заметил, что многие разработчики используют
margin для добавления промежутков между элементами flexbox, особенно в меню. Вместо
margin во Flexbox можно использовать свойство gap и избежать неудобных :not(:last-child) или сброса margin на первом/последнем элементе. 😉gap в baseeline с апреля 2021 года. ✅#CSS #flexbox #tips
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Please open Telegram to view this post
VIEW IN TELEGRAM
Intl.DurationFormat: Форматирование временных интервалов с поддержкой локалиХватит писать код форматирования временных интервалов вручную. Используйте новый мощный API Intl.DateTimeFormat для отображения локализированного времени.
Временные интервалы встречаются повсюду — видеоплееры показывают оставшееся время, фитнес-приложения отслеживают продолжительность тренировок, а инструменты управления проектами измеряют время выполнения задач. Традиционно для форматирования этих значений в разных локалях требовался собственный код или внешние библиотеки.
Объект
Intl.DurationFormat элегантно решает данную проблему. Он является частью основной спецификации языка ECMAScript — в частности, ECMAScript Internationalization API (ECMA-402). Это делает его нативной функцией JavaScript, а не API веб-браузера, хотя браузерная реализация определяет его доступность.#JavaScript
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🔥1
При использовании
php artisan down --secret="your-secret", Laravel блокирует все запросы, включая запланированные команды (schedule).Проблема:
Если есть запланированная задача в
app/Console/Kernel.php, например, создание резервной копии:$schedule->command('backup:run')
->dailyAt('03:00');Эта команда не выполнится, пока приложение находится в режиме обслуживания.
Решение:
Добавьте
evenInMaintenanceMode(), чтобы команда выполнялась, даже когда активен режим обслуживания:$schedule->command('backup:run')
->dailyAt('03:00')
->evenInMaintenanceMode();✅ Теперь важные задачи, такие как резервное копирование, отчеты и синхронизация, будут выполняться даже когда сайт не доступен пользователям!
#Laravel #Schedule #Maintenance #tips
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👍1
Number::fileSize в приложениях Laravel для преобразования размеров файлов (в байтах) в более человекочитаемые представления!Это удобно для отображения размеров файлов в пользовательском интерфейсе.
#Laravel #Number #tips
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤1
Способы улучшения производительности баз данных для приложений Laravel с использованием ORM Eloquent.
#Eloquent #tips
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥2❤1
Его можно получить, выполнив команду:
php artisan route:list --only-vendor
Это удобно для аудита маршрутов и выявления тех, о которых вы могли не знать, чтобы гарантировать, что они заблокированы и безопасны!
#Laravel #Route #tips
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤1
Вам приходилось писать одни и те же проверки в нескольких контроллерах? Например, форматирование вводимых данных, блокировка доступа или отслеживание пользовательской активности? Всё это начинает казаться повторяющимся, верно?... и быстро надоедает.
Вот тут-то и приходит на помощь middleware. Думайте о нём как о «вышибале» в приложении — он проверяет, изменяет или отклоняет запросы до того, как они попадут к контроллерам. Или даже после того, как запрос обработан (многие об этом не знают). Вместо того чтобы загромождать контроллеры повторяющейся логикой или разделять эту логику в трейте, middleware помогает добавлять функциональность по нескольким маршрутам более чистым и удобным способом.
#Laravel #Middleware
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2❤1
Иногда возникает необходимость привязать примитив к значению, например, к значению конфигурации. Вместо того чтобы использовать
give() с обратным вызовом, Laravel предоставляет сокращение giveConfig, делающее именно это #Laravel #tips
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2❤1
В SQL-запросе операторы выполняются в следующем порядке:
1.
FROM / JOIN2.
WHERE3.
GROUP BY4.
HAVING5.
SELECT6.
DISTINCT7.
ORDER BY8.
LIMIT / OFFETПриемы, применяемые на каждом этапе, помогают ускорить выполнение следующих шагов. Поэтому важно знать порядок их выполнения. Чтобы добиться максимальной эффективности, сосредоточьтесь на оптимизации шагов, расположенных на более ранних этапах запроса.
С учётом этого рассмотрим некоторые советы по оптимизации:
Максимизируйте выражение `
WHERE`.Это выражение выполняется раньше, поэтому оно предоставляет хорошую возможность уменьшить размер набора данных до того, как будет обработана остальная часть запроса.
Фильтруйте строки перед `
JOIN`Хотя запрос
FROM/JOIN выполняется первым, всё равно можно ограничить количество строк. Чтобы ограничить количество присоединяемых строк, используйте подзапрос в операторе FROM вместо таблицы.Используйте `
WHERE` вместо `HAVING`Выражение
HAVING выполняется после WHERE и GROUP BY. Это означает, что при возможности стоит перенести все необходимые условия в выражение WHERE.Не путайте `
LIMIT`, `OFFSET` и `DISTINCT` с методами оптимизацииЛегко предположить, что они повышают производительность за счет минимизации набора данных, но это не так. Поскольку они выполняются в конце запроса, они практически не влияют на его производительность.
#SQL #DataBase #tips
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Перед развертыванием проекта Laravel убедитесь, что параметры безопасности и стабильности правильно настроены. Вот несколько важных настроек, которые необходимо добавить в сервис провайдер (например,
AppServiceProvider).Принудительное использование HTTPS для всех URL-адресов (кроме локального окружения):
private function enforceSecureUrls(): void
{
if (!$this->app->environment('local')) {
URL::forceScheme('https');
}
}
Отключение опасных SQL команд (
DROP, TRUNCATE) в продакшне:DB::prohibitDestructiveCommands($this->app->isProduction());
Ускоряет работу приложения в продакшне:
php artisan config:cache
php artisan route:cache
Добавьте
enforceSecureUrls() и DB::prohibitDestructiveCommands() в метод boot() своего AppServiceProvider:public function boot(): void
{
$this->enforceSecureUrls();
DB::prohibitDestructiveCommands($this->app->isProduction());
}
#Laravel #tips
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍1
В PHP 8.4 появилось мощное обновление — теперь можно выбирать элементы DOM с помощью CSS селекторов, как в JavaScript! Встречайте новые методы:
querySelector() и querySelectorAll().Примеры использования
$dom = new DOMDocument();
$dom->loadHTML('
<div id="title">Title by ID</div>
<div class="header">Title by class</div>
');
// По ID
$title = $dom->querySelector('#title');
echo $title->textContent; // Title по ID
// По классу
$header = $dom->querySelector('.header');
echo $header->textContent; // Title по классу
$dom = new DOMDocument();
$dom->loadHTML('
<ul>
<li class="item">Item 1</li>
<li class="item">Item 2</li>
</ul>
');
$items = $dom->querySelectorAll('.item');
foreach ($items as $item) {
echo $item->textContent . "\n";
}
✨ Почему это замечательно:
✅ Знакомый синтаксис CSS — чистый и интуитивно понятный
✅ Меньше шаблонов — больше никаких вложенных циклов или
getElementsBy...()✅ Точный выбор элемента — по идентификатору, классу, тегу или любой комбинации
📌 Теперь работа с HTML в PHP похожа на JavaScript — и это намного удобнее!
#PHP #tips
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5❤2👍2🤨1