Modular CSS
…right inside the component. In products.vue,
we render an element with a sidebar class... and then immediately - without going
anywhere else - we're able to add the CSS for that. We can still have external
CSS files with shared CSS, but for any styling…
Production Secrets
…
Now, instead of needing to figure out how and where to securely store all our
sensitive values so that we can add them to our app when we deploy, there is now
just one sensitive value: the decrypt key file.
When we deploy to production…
Generate URLs
Go back to the "show" page for a question. The logo on top is a link... that doesn't
go anywhere yet. This should take us back to the homepage.
Because this is part of the layout, the link lives in base.html.twig. Here…
Webpack Visualizer
…this contained a surprise! The second biggest library is core-js. What
the heck is that? And where did it come from?
If you do some digging, you'll find out that this comes from layout.js: specifically
from babel-polyfill:
Remember, we included this…
Operations
…First, "collection" operations. These
are the URLs that don't include {id} and where the "resource" you're operating
on is technically the "collection of cheese listings". For example, you're "getting"
the collection or you're "adding" to the collection with POST.
And second…
Knowing your State Machines
…these five states have a class and that class itself
only have one f unction. It has a Send function. And, and that calls itself
decides what to do and where to go next. Makes sense? So the idea here is that
we have, have…
Using Symfony Forms with Rich Domain Models
…on
your local development machine. Try it out and give us feedback, what works,
what maybe does not work and be nice and where you need to write your own glue
code once again. So we want to get rid of the glue code, right…
Building Global Web Apps with Multi-region Hosting
…recently.
Maybe they don't match exactly yours, but, it's just a kind of a lead of where
to go and where we could improve things. I think the first reason: we use the
database. Like having the database in multiple regions is a…
Proper Bundle composer.json File
…the version that Symfony 4.0 requires.
Second, the composer.json file is where we define our autoloading rules: Composer
needs to know what namespace our bundle uses and where those classes live.
Up until now, we put those autoload rules inside the main project…
Publishing to Packagist
… So let's take care of a few last
details, and publish our bundle to Packagist!
But, before we publish this anywhere, we need do some boring, but very important
legal work. Go to choosealicense.com and find the
license that works best for you…
parameters.yml & %kernel.root_dir%
…You
won't find these defined anywhere: they're baked right into Symfony and are some
of the most useful parameters.
Notice kernel.debug - whether or not we're in debug mode - and kernel.environment.
But the best ones to know about are kernel.cache…
Page Specific CSS
…Here, we get personal with Mr Tyranosaur. His
big image has a class called dino-img-show that's not used anywhere else
on this site. But the CSS behind this lives in styles.scss. And that means
we're including it on every page…
Security Fundamentals
…really powerful. Honestly,
it’s also really complex. It can connect with other authentication systems
like Facebook or LDAP - or load user information from anywhere, like a
database or even across an API.The bummer is that hooking all this up can be tough. But…
Creating a Login Form (Part 2)
…redirected to the page they last
visited or the homepage. If login fails, the user is sent back to /login
and an error is shown.
And where did the user and userpass stuff come from? Actually, right
now the users are just being loaded directly…
Contributing back to Symfony!
…and where you git in:
Organization of the Symfony issue tracker
Triaging pull requests
Triaging issues
Creating a bug reproducer
Creating a pull request
Running the Symfony tests
Symfony's branch merging workflow
Linking up your fork to a test project
Contributing to the docs…
Joining to Avoid the N+1 Trap
…last stub, then name it findAllOrderedByPrice(). Remove
the $value argument, no need for that:
Build a simple query: I'll use sp as the alias for StarshipPart. Ditch the
andWhere() and setParameter() below that. We do, however, need the orderBy():
as orderBy('sp.price', 'DESC…
The QueryBuilder
…repository.
Pass cat as the argument - this will be the alias to Category:
Now, let's chain some awesomeness! The QueryBuilder has methods on it like
andWhere, leftJoin and addOrderBy. Let's use that - pass cat.name
as the first argument and DESC as the…
Criteria System: Champion Collection Filtering
…create():
Next, we'll chain off of this and build something that looks somewhat similar
to a Doctrine query builder. Say, andWhere(), then Criteria::expr()->gt()
for a greater than comparison. There are a ton of other methods for equals, less than
and any other…
Doctrine’s QueryBuilder
…orderBy
and groupBy. It’s really handy.
The stuff inside andWhere looks similar to SQL except that we use “placeholders”
for the two variables. Fill each of these in by calling setParameter.
The reason this is separated into two steps is to avoid SQL injection…
Access Token Authenticator
…perfect system just for this! Spin over and open up
config/packages/security.yaml. Anywhere under your firewall add access_token:
This activates a listener that will watch every request to see if it has an
Authorization header. If it does, it will read that…
x
511