The essential news about content management systems and mobile technology. Powered by Perfect Publisher and XT Search for Algolia.
The News Site publishes posts to the following channels: Facebook, Instagram, Twitter, Telegram, Web Push, Tumblr, and Blogger.
Welcome to the November edition of the Laravel Roundup. This covers recent highlights, community events, Laravel jobs, and more!
Laravel New
Now, you can install PHP and the Laravel installer with a single
command.
Laravel MongoDB releases version
5.0
Version 5.0 of the official Laravel MongoDB integration is now
available and Laravel Herd added native support
WireSpy for Laravel Livewire
WireSpy lets you instantly debug and interact with your Laravel
Livewire components. You can inspect the state of your components,
modify that state, and time travel through state changes to debug
issues.
Inertia v2 Beta
The beta version of Inertia.js v2 was recently released. The core
library has been rewritten to support asynchronous requests;
unlocking some impressive features, you can now get your hands
on!
Pan
Nuno Maduro released a new PHP package called Pan, a lightweight
and privacy-focused PHP product analytics library.
API Platform for Laravel
API Platform is a set of tools for building modern web projects.
Like other modern frameworks such as Laravel and Symfony, it’s a
full-stack, all-in-one framework and a set of independent PHP
components and bundles that can be used separately.
Lead Full Stack Developer
Insomnia Cookies - Remote, East Coast, USA
eCommerce developer for CMS
CMS Max - Remote
Senior Backend Developer (PHP)
Cuez by TinkerList - Remote / Belgium
Startup Backend Developer
Athlete To Athlete - Santa Monica, CA
Product Engineer, Direct (Laravel)
Hospitable - Remote
Laravel Jedi
Creative Force - Remote (Asia Pacific / Europe)
Full Stack Developer
Zudu - Edinburgh / UK / Hybrid
Product Engineer, AI (Laravel)
Hospitable - Remote
Lead Engineer - Full Stack (Laravel, Vue, MySQL,
MongoDB)
LenderHomePage - Remote
Senior PHP/Laravel Developer
Gecko - Remote (UK only)
Backend Developer
ARPM (Advanced Risk and Portfolio Management) - Remote / Europe /
West Asia
Senior Software Engineer (Full
Stack)
Tixel - Remote (UK + EU)
Senior PHP Developer (Laravel)
Interaction Design Foundation - Remote
Fullstack Developer - PaaS InsurTech
Software
Buckhill Software - Remote (+/- 3 hours from CET)
Tech Lead Manager, Core Products
Knot - New York City
Sr Angular & Laravel Developer
Mynkis - Remote / USA
If you want to hire Laravel developers, visit LaraJobs and see your job listing here next month.
You can see all the past interviews on our YouTube channel.
Always Render API Exceptions as JSON in Laravel
Laravel gives you a handy way to render all exceptions for API requests as JSON without any custom middleware. This bootstrap configuration tip makes it easy to ensure API exceptions render as JSON.
Split Log Levels Between Stdout and Stderr With Laravel
Learn how to split log levels between different log channels using Laravel and Monolog. Using the FilterHandler, you can configure a log channel to only send specific logs.
Supercharge PhpStorm with Laravel Idea
Laravel Idea is a fantastic plugin for PhpStorm that adds some really useful features to improve your developer experience. In this article, we'll take a look at some of the best features it offers.
Contact us if you have an upcoming Laravel meetup that you'd like to see listed.
The post Laravel Roundup - November appeared first on Laravel News.
Join the Laravel Newsletter to get all the latest Laravel articles like this directly in your inbox.
Read more https://laravel-news.com/laravel-roundup-november-2024
Bento is an Email Marketing & Automation Platform for Startups and their team recently created an official Laravel SDK.
If this is your first time hearing of Bento and you are in need of an email marketing service, they do offer a free 30 day trial so you can give it a try.
If you are an existing Bento user then this SDK helps to make it easier to send emails and track events in your Laravel applications. The package provides powerful and customizable APIs that can be used to manage your subscribers, track events, and send transactional emails. Low-level APIs have also been exposed so that you can build fully customizable experiences.
To install the SDK you can run:
composer require bentonow/bento-laravel-sdk
Next, publish your config:
php artisan vendor:publish --tag bentonow
Then add a new mailer definition in
config/mail.php
:
'bento' => [
'transport' => 'bento',
],
Lastly, update your .env
file to add your Bento API
keys:
BENTO_PUBLISHABLE_KEY="bento-publishable-key"
BENTO_SECRET_KEY="bento-secret-key"
BENTO_SITE_UUID="bento-site-uuid"
MAIL_MAILER="bento"
As an example of its use, if you wanted to add a new subscriber to your account you could use the following code:
use Bentonow\BentoLaravel\Facades\Bento;
use Bentonow\BentoLaravel\DataTransferObjects\CreateSubscriberData;
$data = collect([
new CreateSubscriberData(email: "This email address is being protected from spambots. You need JavaScript enabled to view it. ")
]);
return Bento::createSubscriber($data)->json();
And when you need to find a particular subscriber, you could use the following:
use Bentonow\BentoLaravel\Facades\Bento;
return Bento::findSubscriber("This email address is being protected from spambots. You need JavaScript enabled to view it. ")->json();
There is a lot more you can do with this package and we hope to do a follow up tutorial to demonstrate more soon. Until then learn more about this package by reading the documentation and view the source code on Github.
The post Bento Laravel SDK appeared first on Laravel News.
Join the Laravel Newsletter to get all the latest Laravel articles like this directly in your inbox.
Read more https://laravel-news.com/bento-laravel-sdk
In the world of web development, creating custom layouts often feels like a balancing act between functionality and design. But with Gutenberg, WordPress’s powerful block editor, developers now have the tools to craft complex, unique layouts—all without the need for third-party page builders. Whether you’re building a site from scratch or looking to enhance an existing one, Gutenberg offers a streamlined, flexible approach to layout design.
In this post, we dive into five specific Gutenberg blocks that stand out for their versatility and power.
These blocks are essential tools for developers who want to create custom layouts that are both visually stunning and fully functional. Keep reading to explore how each block works, see examples of them in action, and learn about potential use cases that can elevate your next project.
When it comes to crafting custom layouts in WordPress, the Group block is one of the most versatile tools in your arsenal. This block allows you to combine multiple elements—such as text, images, and buttons—into a single, cohesive section. By grouping elements together and utilizing the Group block variations, you gain greater control over their positioning, styling, and responsiveness.
The strength of the Group block lies in its ability to simplify your design process. Instead of having to adjust settings on each element individually, the Group block allows you to apply consistent styling to an entire section. This not only saves time but also ensures that your layouts are cohesive and visually appealing across different devices. It’s also the primary block used for creating fixed elements, such as a sticky header or sidebar.
In the screen recording below, you’ll see how the Group block enhances the process of building a hero section by combining elements like images, text, and buttons into one cohesive section. Notice how easily you can adjust the spacing, colors, and alignment, streamlining your design workflow.
The Group block excels at creating reusable modular sections, such as a call-to-action or feature area, that can be deployed consistently across multiple pages. This block is also essential for organizing complex content arrangements into a single, unified section that can be easily updated site-wide. Whether you’re crafting a sticky header or organizing a product showcase, the Group block gives you precise control over how these elements are positioned and styled.
The Columns block offers flexibility in organizing content side-by-side, allowing developers to create multi-column layouts that can accommodate grids, comparison sections, or any layout where parallel information is key.
The true power of the Columns block lies in its versatility for designing structured layouts. Its flexibility allows you to customize the number of columns, their width, and spacing, from simple two-column layouts to more complex grids. The Columns block is also fully responsive, ensuring layouts automatically adjust across different screen sizes, providing developers with seamless control over visually balanced designs.
This recording showcases the Columns block used to create a three-column layout featuring services or products. Notice how columns with multiple components can be duplicated and edited.
The Columns block is ideal when content needs to be displayed side by side, such as in service comparisons, product grids, or team member profiles. Combining it with the Group block allows for more complex, unified sections with consistent styling while still leveraging the flexibility of columns.
After organizing your content with the Group and Columns blocks, the Cover block steps in to add a bold, immersive visual experience. Whether it’s a full-width section with a background image or a full-screen video, the Cover block helps create standout moments on your page, perfect for grabbing your audience’s attention as they scroll.
What sets the Cover block apart is its ability to combine beautiful visuals with layered content like text and buttons. This block allows for a sleek, modern look with customizable overlays, and its parallax effect creates a sense of depth as users scroll. It offers developers a visually striking way to engage visitors and direct attention to key content.
The following video demonstrates the Cover block being used to create a dynamic section break with a full-width image, overlay text, and a contrasting color filter. Pay attention to how this visually striking break guides users from one section to the next.
Whether for a hero section, a banner to break up sections, or a feature area to emphasize important content, the Cover block works best where you want to make an impression. It’s ideal for landing pages, events, or promotional areas where a mix of powerful visuals and actionable text is needed to guide visitors toward their next step.
For developers, clean, balanced layouts are crucial to a great user experience. The Spacer block might seem simple at first glance, but its ability to fine-tune the spacing between elements gives you precise control over your design. Rather than manually adjusting margins or padding across multiple blocks, the Spacer block offers a streamlined approach for maintaining consistency throughout your layout.
One of the key benefits of the Spacer block is its ability to apply consistent spacing without needing to modify each block’s individual settings. For developers managing complex layouts, this can be a huge time-saver. You can insert Spacer blocks between sections to ensure consistent spacing, avoiding the need to repeatedly jump between block settings. This results in a cleaner workflow and a more polished design.
This clip highlights how the Spacer block ensures balanced spacing between sections. You’ll see how adding Spacer blocks keeps the layout clean and cohesive without needing to adjust individual padding and margins for each element. Plus, see how changing the height of multiple Spacer blocks is one step when you create a Spacer synced pattern.
The Spacer block shines when you need to maintain uniform spacing throughout a project. You can preset its default dimensions or sync it within design patterns, and any future adjustments can be done in one place, saving you time when managing entire page or site-wide updates. For added flexibility, you can apply custom CSS classes to synced Spacer block patterns, making it simple to adjust spacing for different screen sizes. This not only improves the speed of implementation but also ensures consistency across your layouts, whether for landing pages, posts, or custom templates.
The Query Loop block allows you to easily pull in lists of posts, pages, or custom post types, dynamically displaying content based on specific parameters such as categories, tags, or author. It’s an essential tool for developers who want to showcase content in customizable layouts without needing to manually curate each section.
The Query Loop block provides developers with powerful filtering and display options that are fully customizable. With complete control over how posts are pulled and arranged, developers can customize the Query Loop block to display filtered content based on categories, tags, or other criteria, allowing for tailored blog grids, portfolios, or archive pages that fit seamlessly into their overall site design.
This example shows how the Query Loop block is configured to display a custom set of blog posts, filtered by category. Notice the versatility and how integrating blocks together enhances the layout, resulting in a dynamic, visually balanced blog section that updates automatically.
On sites with frequently updated content, the Query Loop block provides a dynamic solution for showcasing new material. When integrated with other blocks it helps developers create visually engaging layouts that update automatically while keeping a consistent design structure.
These five versatile Gutenberg blocks—Group, Columns, Cover, Spacer, and Query Loop—can transform your layouts, helping you build dynamic, fully customized designs. Whether you’re creating responsive multi-column sections with the Columns block, adding visually striking breaks with the Cover block, or displaying dynamic content with the Query Loop block, these tools empower you to build and refine layouts with precision and creativity.
Each block offers unique strengths, and when used together, they give developers a powerful toolkit to craft sophisticated designs directly within the WordPress editor. By combining these blocks, you can streamline your workflow, maintain consistency, and create layouts that are both visually appealing and highly functional.
Now it’s your turn. Experiment with these blocks in your next project and explore the different ways they can work together to create custom layouts tailored to your needs. In the comments below, share your unique Gutenberg-powered layouts and show us how you’ve applied these blocks to your projects. We’d love to see what you come up with!
This week, the Laravel team released v11.30, which includes
defer testing helpers, the ability to define custom unique string
IDs for Eloquent models, the use of backed Enums with
AuthorizesRequests
, and more.
withDefer()
and withoutDefer()
Test HelpersTim MacDonald contributed a
withoutDefer()
and withDefer()
test
helpers. Using withoutDefer()
is helpful when you are
working with tests use defer, but you want to disable it to assert
the outcome of the deferred call:
// ❌ will not work
User::create(/* ... */);
$this->assertAgainstSomeDeferredOutcome();
// ✅ Will work
$this->withoutDefer();
User::create(/* ... */);
$this->assertAgainstSomeDeferredOutcome();
See Pull Request #53340 for implementation on details on how these helpers work.
HasUniqueStringIds
TraitLuke Kuzmish updated the code around
HasUuids
and HasUlid
eloquent traits so
that you can use custom unique string IDs as route keys without
having to override resolveRouteBindingQuery()
. Here's
an example of how you could customize the types of unique strings
your model uses:
trait HasTwrnsTrait
{
use HasUniqueStringIds;
public function newUniqueId()
{
return (string) Twrn::new();
}
protected function isValidKey($value): bool
{
return Twrn::isValid($value);
}
}
This update doesn't introduce any breaking changes as the
HasUuids
and HasUlid
model concerns now
use the use HasUniqueStringIds
trait. See Pull Request #53280 for more details.
authorize()
Method to Accept EnumsJohan van Helden updated the
AuthorizesRequests
trait to accept backed enums
directly. Laravel has recently received multiple updates to allow
direct use of Enums in various parts of the framework. Here's an
example of using an Enum with the authorize()
method:
enum DashboardPermission: string
{
case VIEW = 'dashboard.view';
}
// Before
public function index(): Response
{
$this->authorize(DashboardPermission::VIEW->value);
//
}
// After
public function index(): Response
{
$this->authorize(DashboardPermission::VIEW);
//
}
You can see the complete list of new features and updates below and the diff between 11.29.0 and 11.30.0 on GitHub. The following release notes are directly from the changelog:
$bind
parameter to
Blade::directive
by @hossein-zare
in https://github.com/laravel/framework/pull/53279trans_choice()
when translation
replacement include |
separator by @crynobone
in https://github.com/laravel/framework/pull/53331exists()
instead of
count()
by @browner12 in
https://github.com/laravel/framework/pull/53328vector
Column Type by @akr4m in https://github.com/laravel/framework/pull/53316dropColumnsIfExists
,
dropColumnIfExists
and
dropForeignIfExists
by @eusonlito in
https://github.com/laravel/framework/pull/53305dropColumnsIfExists
,
dropColumnIfExists
and
dropForeignIfExists
" by @taylorotwell
in https://github.com/laravel/framework/pull/53338HasUniqueStringIds
by @cosmastech in https://github.com/laravel/framework/pull/53280The post Laravel 11.30 Released appeared first on Laravel News.
Join the Laravel Newsletter to get all the latest Laravel articles like this directly in your inbox.
Read more https://laravel-news.com/laravel-11-30-0
Read more https://build.prestashop-project.org/news/2024/live-update-october-2024/
Page 1 of 1367