Member Since 3 Years Ago

Experience Points

150 experience to go until the next level!

In case you were wondering, you earn Laracasts experience when you:

  • Complete a lesson — 100pts
  • Create a forum thread — 50pts
  • Reply to a thread — 10pts
  • Leave a reply that is liked — 50pts
  • Receive a "Best Reply" award — 500pts
Lessons Completed
Best Reply Awards
Best Reply
  • start your engines Created with Sketch.

    Start Your Engines

    Earned once you have completed your first Laracasts lesson.

  • first-thousand Created with Sketch.

    First Thousand

    Earned once you have earned your first 1000 experience points.

  • 1-year Created with Sketch.

    One Year Member

    Earned when you have been with Laracasts for 1 year.

  • 2-years Created with Sketch.

    Two Year Member

    Earned when you have been with Laracasts for 2 years.

  • 3-years Created with Sketch.

    Three Year Member

    Earned when you have been with Laracasts for 3 years.

  • 4-years Created with Sketch.

    Four Year Member

    Earned when you have been with Laracasts for 4 years.

  • 5-years Created with Sketch.

    Five Year Member

    Earned when you have been with Laracasts for 5 years.

  • school-in-session Created with Sketch.

    School In Session

    Earned when at least one Laracasts series has been fully completed.

  • welcome-newcomer Created with Sketch.

    Welcome To The Community

    Earned after your first post on the Laracasts forum.

  • full-time-student Created with Sketch.

    Full Time Learner

    Earned once 100 Laracasts lessons have been completed.

  • pay-it-forward Created with Sketch.

    Pay It Forward

    Earned once you receive your first "Best Reply" award on the Laracasts forum.

  • subscriber Created with Sketch.


    Earned if you are a paying Laracasts subscriber.

  • lifer Created with Sketch.


    Earned if you have a lifetime subscription to Laracasts.

  • evangelist Created with Sketch.

    Laracasts Evangelist

    Earned if you share a link to Laracasts on social media. Please email [email protected] with your username and post URL to be awarded this badge.

  • chatty-cathy Created with Sketch.

    Chatty Cathy

    Earned once you have achieved 500 forum replies.

  • lara-veteran Created with Sketch.

    Laracasts Veteran

    Earned once your experience points passes 100,000.

  • 10k-strong Created with Sketch.

    Ten Thousand Strong

    Earned once your experience points hits 10,000.

  • lara-master Created with Sketch.

    Laracasts Master

    Earned once 1000 Laracasts lessons have been completed.

  • laracasts-tutor Created with Sketch.

    Laracasts Tutor

    Earned once your "Best Reply" award count is 100 or more.

  • laracasts-sensei Created with Sketch.

    Laracasts Sensei

    Earned once your experience points passes 1 million.

  • top-50 Created with Sketch.

    Top 50

    Earned once your experience points ranks in the top 50 of all Laracasts users.

Level 3
14,850 XP
1 week ago
Activity icon

Replied to Variables And Bulma-Extension

@jebjeb you kinda hijacking the thread. It's best to post a new thread, but I'll give you a quick overview here. If you need more help, please post a new thread.

I'm using npm and can pull in packages from npm. you look them up at you navigate to your laravel directory via command prompt and pull in each bulma and the bulma-extensions.

> npm i bulma
> npm i bulma-extensions

In you app.scss file you import bulma first and each extension individually:

@import '~bulma/bulma';
@import '~bulma-switch';
@import '~bulma-steps';

To see the changes in your compiled css/js you need to go back to the terminal and have npm compile the assets:

> npm run dev

Make sure your css/js is being referenced in your in your main template (probably app.blade.php) make sure you include like:

<link href="{{ asset('css/app.css') }}" rel="stylesheet">
<script src="{{ asset('js/app.js') }}" ></script>

try it and if you need a new thread

1 week ago
Activity icon

Replied to Variables And Bulma-Extension

thank you for your response. I think that @import is depricated, but I tried it anyway: @import"../sass/utilities/initial-variables";' errors out... when I compile with npm run dev so I omitted it and tried normal Bulma variables which work fine for regular Bulma. Either way that import line errors.

In all honesty I've never been able to figure out how/why the paths resolve the way they do. phpstorm helped me figure out that @import '~bulma/sass/utilities/initial-variables'; is the correct path and compiles with no error but it still doesn't solve the broken-variables problem with bulma-extensions.

Still cannot get the bulma-extensions variables to work

Activity icon

Started a new Conversation Variables And Bulma-Extension

Anybody know how to customize Bulma-Extensions? While I'm not very proficient at scss I did try to follow the docs and I still can't make sense of this:

I'm trying to change the bulma-switch background color. I have this:

$switch-background: pink;

@import '~bulma/bulma';
@import '~bulma-switch';

According to the docs: I can hook into these variables, but it doesn't seem to work. Bulma and the switch works fine, but the variable doesn't seem to be applied.

For a sanity test, I tried playing around with variables in the regular Bulma library and that worked no problem.

Have any experience/ideas with this?


3 weeks ago
Activity icon

Started a new Conversation Vue UI Frameworks... Discord = I Want To Barf

I've been developing websites on and off for 15+ years. I love Laravel and the Laravel community, the training, the whole bit. I happily pay my laracasts fee each month I'm admittedly old, being in my mid-40s, but man 'o man trying to get into Vue UI libraries is such a turn off.

I've been using little drips and drabs of Vue in projects for a few years (still don't quite get it's proper use for non SPAs) but needed to step it up a bit with custom table filtering recently. I spent all day exploring the popular Vue UI libraries: Buefy, Vuetify, Quasar. What is up with these bizarre frameworks? or more like their [email protected]$$ communities. I feel like I've stumbled into the land of video gaming kids?

I had a lapse of judgement and joined discourse to see if I could get some support. First off discourse? Never even heard of it. That has to be the worst place ever to try and share coding help...EVER! Why the hell are all these Vue UI libraries using this non-forum, hipster social media as a support environment?

What on earth am I missing here?

4 weeks ago
Activity icon

Replied to Form Validation Errors With Previously Posted Page

Okay thanks. Is there any benefit to doing those over say serializing an array and packing it all into a single session variable? I know in this case one get's to use to always attractive arrow syntax, but are there some other benefits?

Activity icon

Replied to Form Validation Errors With Previously Posted Page

thank you @bobbybouwmann for your valuable insights. Even if using a session I was just going to serialize it all into an array anyway...I was thinking the same thing...only one key to erase in the session.

I had to look up "DTO" to see what one was! Unfortunately I couldn't find any laracasts on this technique unless DTO and Data Objects are the same thing? I've seen the lesson on Data Objects

Is is just a simple table that has key|value and can be referred to across many sessions or in my case several pages?

4 weeks ago
Activity icon

Replied to Form Validation Errors With Previously Posted Page

@snapey Are us suggesting storing the form data to session and then manually removing them after a successful form submission? So One of the last things to do in my [email protected] would be like:

public function store(Domain $domain, Category $category, Request $request){
	...//saving logic


Is this what you are suggesting rather than to keep reflashing?

Activity icon

Replied to Form Validation Errors With Previously Posted Page

Thank you @fahad @bobbybouwmann & @snapey for your insight. It sounds like I need to double up my routes now, for each stage/page of the form. One for the Route::post and another for the Route:get.

It works but I would like to know some of your further expertise

What would you guys do for passing the form data that was submitted in the post/form 1?

At first I was passing get variables to the redirect... but then I remembered flash vars... So as of now I've got it working like this:

public function approve(Domain $domain, Category $category, Request $request) {
	$request->session()->flash('tags', $request->tags);
	return redirect()->route('planner.approveView', ['domain'=>$domain,'category'=>$category]);
public function approveView(Domain $domain, Category $category, Request $request) {
	$tags = Tag::findOrFail($request->session()->get('tags'));
	return view('planner.approved', compact('domain','category','tags'));

public function store(Domain $domain, Category $category, Request $request) {
	$request->session()->reflash();//Just in case we have a validation error
	$validatedData = $request->validate([
		'articles.*.title' => ['required', 'min:5'],


I just keep refreshing the flash vars in the controller methods so that it sticks around incase of a validation error and will gracefully let it die after a successful form submission.

Now that I've got controller method/routes for both get and post is there some kind of naming convention to use? I always seem to come up with the worst names when left to my own imagination :)

Activity icon

Started a new Conversation Form Validation Errors With Previously Posted Page

I have a multistep form that needs to live on several separate pages. Page 1 use uses checkboxes to select options which makes post request and yields page 2. easy.

Page 2 Yields some form inputs. The problem is with the validation/error reporting If there is a validation error with the form from page 2, Laravel sends the errors bag back by making a get request. But the previous page was arrived at via a post route so of course everything errors out.

What's a good solution to this problem?

1 month ago
Activity icon

Replied to Combining Blade And Vue

I've been playing around with alpinejs for the better part of the day. I love how simple it feels to implement. It feels like I writing native html only for events! cool. The documentation and q & a on the web is really limited though. I'm completely stumped on access the alpinejs models within an axios then() function:

    function getArticles() {
        let url = "/api/sitemap";
        return {
            articles: [],
            sendForm: function (event) {
                let self = this;

      , {
                    something: 'some stuff',
                .then(  function (response) {
                    console.log(self)// yields Proxy{}    ???????
                    self.articles =;

The trusty old scoping via let self = this; is not working. (neither did .bind(self) or arrow functions. Do you know how to access alpine's models in this scope?


1 month ago
Activity icon

Replied to Combining Blade And Vue

Thank you for your suggestion... I remember taking a quick look at alpine a few months ago but didn't pursue it because it didn't seem like a framework that would stick around. Why? alpinejs doesn't have its own dedicated website/docs, the training/examples are few and far between. I suppose that's why I skipped right over it.

BUT, it's time to give alpine a second look. It looks like there is no ajax, but I could easily use axios for that, right?

Do you just include all your <script>...js </script> at the bottom of each page?

I'd also be interested how people solve these problems with Vuejs? Maybe they don't. I don't know.

Activity icon

Started a new Conversation Combining Blade And Vue

I've built a few sites using Laravel (love it)...All laracasts lessons seems to be aimed at using vue to drive the frontend OR blade, but not really both in a real-world way IMHO.

My current project outputs blade/html and uses a wee bit of javascript here-and-there for stuff like form checking/ ajax loading, etc. [not a SPA]

What I can't wrap my head around is how to combine Vue with Blade in an organized, DRY way. In the past I've just thrown the javascript at the bottom of the Blade template. It works with all kinds of Vue warnings and doesn't feel right:

<script type="text/javascript">
    var app = new Vue({
        el: '#app',
        data: {
            cms_icon: {
                wordpress: 'fab fa-wordpress-simple',
                joomla: 'fab fa-joomla',
                drupal: 'fab fa-drupal',
                shopify: 'fab fa-shopify',
                other: 'fas fa-wrench',
        methods: {

Where do I put each page's Vue/javascript?

I know about Vue's Single File Components but that seems like a solution for a js-driven site (one in which every page pulls its content via ajax). I'm interested in leveraging mostly blade's @foreach and other control statements. If I move the html over to a Vue Single File Component...then I have to pass in php variables into Vue and then render it out. Not really what I want to do.

I want to render most pages with blade/php and use Vue to handle small tasks, like applying icons. Showing content when clicking, etc.... (all that standard stuff us old timers used to use jquery to do!)

How do I structure this?

thank you

1 month ago
Activity icon

Commented on Source Diving The Queue Worker

Great series! Source Diving? Sounds great... could you please explain how you are doing that. I almost wish your screen recorder had that display setting that showed us the keys you were pressing.

I've been watching you zip around in both sublime and phpStorm for years. Please do some Updated tooling videos...most of the tooling stuff is ancient eg:phpStorm from ~2015.

1 month ago
Activity icon

Replied to Vue And Laravel Named Routes

Oh man I've been laughing for 10 straight minutes over the fart comment. My wife thinks I'm a lunatic right now!

1 month ago
Activity icon

Replied to Authorizing / Checking Several Parent Models

Thank you for leading me to policies... it does seem like the right tool for the job.

Now I only get a 403 page when hitting that route. I've stripped everything down to the bare minimum to test and still get the 403.

My NotePolicy.php looks like this:

namespace App\Policies;

use Illuminate\Auth\Access\HandlesAuthorization;

class NotePolicy {
    use HandlesAuthorization;

    public function show(Note $note) {
	return true;

And my controller has the following:

$this->authorize('shows', $note);

No good. Even though I am immediately returning TRUE in the policy I'm still getting a 403!

2 months ago
Activity icon

Started a new Conversation Authorizing / Checking Several Parent Models

I'm using Laravel 7.0

I've set up a bunch of tables with their associated foreign indices and the proper model relationships (usually hasMany() methods)

The table hierarchy looks like this:


What is a good way to authorize the routes when deep into the nested models?

Let's say my url/route looks like: http://site.test/domains/1/articles/7/notes/1

public function show(Domain $domain, Article $article, Note $note) {

   ...controller logic...


I need a way to make sure that the $note is associated with the correct $article which is associated with the correct $domain which in turn is associated with the correct $user.

Chaining them doesn't work:

public function show(Domain $domain, Article $article, Note $note) {

    $note = auth()->user()->domains()->articles()->notes()->findOrFail($note->id);

   ...controller logic...

The following works but feels long winded

public function show(Domain $domain, Article $article, Note $note) {

    $domain = auth()->user()->domains()->findOrFail($domain->id);
    $article = $domain->articles()->findOrFail($article->id);
    $note = $article->notes()->findOrFail($note->id);

   ...controller logic...

What is a good way to authorize these multi-parented models?

4 months ago
Activity icon

Replied to Reliable Local Laravel Environment (macOS)?

Thank you for your reply @fylzero :

Wow, Valet looks way less complicated than Homestead which is what I looked at a while back. When using Valet will all my plain php stuff in /Library/WebServer/Documents still work?

So with Valet there will be no messing around with all those annoying http.config, etc. files? That would be great:)

4 months ago
Activity icon

Started a new Conversation Reliable Local Laravel Environment (macOS)?

Every time macOS goes through a major update it seems I spend no less than half the weekend trying to fix all the newly broken config files and enable & disable modules just to get back to a working local environment for Laravel. (so annoying)

I have been managing my apache/MySQL/PHP stack with brew.

Is there a Better way to keep a reliable local dev stack functional? Even through the random update/changes macOS makes that breaks things?

Is there some GUI that makes sure all the local dev settings are right, permissions are set, etc.....?

What do you guys do?