Member Since 2 Years Ago

Experience Points 13,240
Experience Level 3

1,760 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 76
Best Reply Awards 9
Best Reply
  • start-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-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-token Created with Sketch.


    Earned if you are a paying Laracasts subscriber.

  • lifer-token Created with Sketch.


    Earned if you have a lifetime subscription to Laracasts.

  • lara-evanghelist 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.

07 Aug
2 weeks ago

hollyit left a reply on Where Do Developers Hangout Usually.

The Laravel subreddit is actually pretty decent (one of the better ones out there). Stay away from the Facebook Laravel Developers groups, unless you want a real laugh. The questions are horrible.

By far the best place I've found is right here. Great community and people willing to help instead of sling mud.

05 Aug
2 weeks ago

hollyit left a reply on Composer Install Problem

In all honesty, you end up fighting XAMPP more than actually working. I suggest grabbing Neard. Much easier to use and much more robust. You would have to download the PHP version you want (they have simple directions on the site). Enabling PHP extensions is a simple matter of clicking the icon on your try and enabling the extensions.


hollyit left a reply on How To Use A Database On A Remote Server?

MySQL isn't just by username, but by username and host. Instead of 'user'@'localhost', you need to change localhost to the hostname or IP you are connecting from (ie: where Laravel is running) and add the grants to that user.


23 Jul
4 weeks ago

hollyit left a reply on Laravel Mix/webpack With Scripts On Specific Pages?

Instead of going through all that, why not just lazy load them through the main app.js file? It's a lot easier to maintain and Webpack/Mix handles all the headaches for you.


hollyit left a reply on Remove Illuminate\Http\UploadedFile From Request Object After Asynchronous File Upload

Sounds like the problem is actually in your Vue component. My guess is the file field isn't being cleared out. Unless you got some package or trying to do something really funky with Laravel, it should never know about other requests. That's the stateless nature of PHP. One request ends and all variables, data, etc., are gone.

EDIT: Best way to check is watch the network tab in your browser dev tools when doing the request and see exactly what is being sent to the server.

12 Jul
1 month ago

hollyit left a reply on Generate Unique Payment Reference Number

Safest bet would be a separate table to track the transition and use the ID of that table as your transaction_id. You could also use something like UUID (Str::uuid() in Laravel 5.6+), but any randomly generate string does come with an inherit risk of collision, so it's always best to wrap it in a loop to make sure that ID doesn't exist.

hollyit left a reply on Drag And Drop Sorting

Debounce limits actions to only happen once every X milliseconds. If you do an update, then you set a debounce to say 250ms (1/4 second). If no other updates happen in that time, it sends the ajax call. If another one does happen, then the timer gets reset and it waits another 250ms. There's debounce libraries for JQuery.

Another problem with your implementation as it stands is that you're assuming that calls will be processed on the server in the order they were sent by the browser. There's never a guarantee of that using stateless communications like HTTP/Ajax. Packets can get bounced, a process handling the first request could be a bit slower than the one handling the second, etc. If you keep it as is, then at least put some kind of UI blocker in there to prevent another call from being made too quickly (or before the previous one is complete).

11 Jul
1 month ago

hollyit left a reply on Drag And Drop Sorting

@mstrauss is correct. You need to give each item an id to use serialize (or toArray), or use some other attribute and set the attribute option to the name of that attribute.

I also suggest not sending an update to the server on each update in sortable. That can become a UX nightmare. Either put a submit button in, or use a debounce function.

hollyit left a reply on Error Handling For NGINX BADGATEWAY

You don't get great error handling using things like file_get_contents. You can try wrapping it in an exception block, but it's a lot better to use a library like Guzzle, where you get the actual HTTP error and can even set things like timeouts. That way if the remote server is bogged down and slow responding, your server doesn't start bottlenecking.

10 Jul
1 month ago

hollyit left a reply on Sql Query Too Slow

You need to index the columns you're going to be querying. If you're using MySQL, I suggest taking some time and learning about "mysql explain" to help identify bottle necks and other things like index order. Another issue that can creep up with larger database is the need to adjust some parameters in the server itself. There's some scripts out there like Tuning Primer that can help identify adjustments to make. As a rule of thumb I keep everything tuned to rather conservative numbers on my dev machine, then get more liberal in production.

08 Jul
1 month ago

hollyit left a reply on PhpStorm - Laravel

Make sure you've run npm/yarn install to install all the dependencies. Also make sure you have Javascript and Node integration enabled in PHPStorm settings.

04 Jul
1 month ago

hollyit left a reply on How Can I Have Custom Rule In A Pipe?

You would have to write an extension. It's in the docs.


03 Jul
1 month ago

hollyit left a reply on How Html Developer Can Work With Live Site?

IMHO this is a loaded scenario. I would find out exactly what knowledge they have in web design. I had a client do the same thing to me a couple of years ago for their redesign. In the end it cost them about 4 times the cost for the redesign and the only thing the original designer had that we used was the logo. I would at least make sure they are up to date on HTML5, CSS3 and responsive design.

28 Jun
1 month ago

hollyit left a reply on PhpStorm Configuration

@AZURINSPIRE - Totally forgot about the colors for highlighting elements. I got rid of those ages ago. I just use the lines that connect them. Makes it much easier IMHO.

27 Jun
1 month ago

hollyit left a reply on Mix Is Compiling To Empty Js File

Node and NPM can be a pain just over mounted shares. When going from Windows->Nix it's a lot worse. VagrantWinNFSd just doesn't like the huge number of files from things like node_modules.

For Windows I suggest dropping Homestead. Instead use this:


It's a portable WAMP server with tons of features that just works. If you need something that doesn't run on WIndows, like Redis, then just spin up a Docker container for that service.

On the node side of things, Neard comes with it (you don't have to use it and instead can install your own version). I'm working on a client project right now that the admin section is a huge SPA. I've got a bunch of dynamic imports and built in a huge monorepo (Yarn workspaces + Lerna). It builds fast using just Windows and even HMR works great.

hollyit left a reply on PhpStorm Configuration

Those colors are diff colors for comparison with the current VCS branch you're on. You can find them in settings under Editor > Color Scheme > Diff & Merge

Other gutter items are under Editor > general > gutter icons

24 Jun
1 month ago

hollyit left a reply on Develop On Windows 10, But Not When Offline

It's been a few years since I last used Acrylic and one of the reasons for it was exactly this. It would not work if you weren't connected to the internet, given that it works by setting the DNS resolver address of the active connection. Even if you try fooling it with a loopback interface, it wouldn't work. Not sure if that's still the case, but something to consider.

If this is the case, the only other option is to go from a virtual environment (docker, vagrant, etc.), since those do create actual networks that you can set the resolver on. It's that or just edit your windows hosts file to point whatever domain you're working on to

hollyit left a reply on Dominate Vue Router With Laravel Router

What exactly is it doing? Are you getting 404 or some other message? As long as you have a route('/admin') in there, it should match it. Actually looking at your Route up there, order shouldn't even matter as /admin should not match your /admin/{all} since {all} would be required.

You might want to try testing the routes in incognito or clearing the browser cache also, as if something sent a 301 redirect it would be cached. That's one little thing that has caught me in the past.

21 Jun
2 months ago

hollyit left a reply on Dominate Vue Router With Laravel Router

Make sure your new route is above your /admin/{all} route in the routes file. Laravel picks the first match, so order matters.

20 Jun
2 months ago

hollyit left a reply on Vue - Parse JSON String

@OLIVERBUSK - My suggestion would be to look at how other Vue table/datatable components work. Bootstrap-Vue is a very common one. If you look in the data() on this page, you'll see the items data that is structured in a row->column structure.

The easiest way to think of it is to vision how the HTML needs to look in the end and model your data similar to that. Tables have rows. Rows have children. So you need to walk down the nesting levels to get to each item. The table is your overall data structure. Inside that table you have multiple rows (), which is your next level down. Inside each row you have multiple columns (), which is the next level.

19 Jun
2 months ago

hollyit left a reply on Return Html Code To View With Javascript Have Repeat Issue

Does your response have an element with the id of content? Sounds like you're adding it into the outer #content div (or whatever element). You can try changing $('#content').empty().html(data); to $('#content').replaceWith(data). One thing to keep in mind on that is if you've done any programmatic binding on any elements within that new HTML (ie: $("#submit").click()), you'll have to rebind them.

hollyit left a reply on Vuelidate And @blur Not Working Correctly.

You can't return out of a promise, you must resolve or reject. Change your return true/false to resolve(true/false).

hollyit left a reply on Append Object To LocalStorage.

@NANADJEI2 - I don't like using localStorage for shopping carts for a couple of reasons. First, if it's a physical item then it's harder to keep track of stock. Second, if you store prices in the cart (ie: to accommodate for someone purchasing during a price change), then it's easy for them to change the price in the cart. It's much better to store cart data with their session on the server.

hollyit left a reply on Vue - Parse JSON String

Agree with @emilmoe - change your data structure. It should be an array of rows, which contains an array of columns. If you can do that in Laravel, it will be a lot easier in Vue. If not, then I would create a computed property to generate the proper array structure for the table. Then it's a simple case of:

<tr v-for="(row,rid) in rows" :key="rid">
   <td v-for="(col,cid) in row" :key="cid" v-text="col"></td>
09 Jun
2 months ago

hollyit left a reply on Laravel 5.x And Bootstrap 4.3 Handling With Tabs And Form

@BARANTR90 - If that's all you're doing, then the easiest and best method would be 2 different forms, each under it's own tab, each going to their own route. There's nothing stopping you from having more than one form on a page, and doing a route for status and a different one for media makes it extremely easy, plus makes it easier to handle other things like validation.

08 Jun
2 months ago

hollyit left a reply on Laravel 5.x And Bootstrap 4.3 Handling With Tabs And Form

I agree with @psylogic - go with a wizard. The problem you get with tabbed forms is a usability problem. If your validation fails on say a middle tab, you need to come up with a way to show that tab. Even worse, you got validation problems on more than one tab. You need a way to show that, unless you expect the user to click through all tabs.

If it were me, I would do all of this inside of Vue. You can validate each step, then move on and store all the data in the browser, submitting it once it all validates. The other way is to submit each step to the server, validate data and either show the error for that step, or store it with the session. Then in the final step get all your data from the session and do what you want with it. This is actually easier than it sounds, unless you're dealing with uploads in one of the steps that need stored in sessions. Then you got to come up with a temp file system to save the file and move it, etc. on the final step. You also need to figure out a way to clear out temp files that are on your disk and the form was never completed. That's why going with Vue is a lot simpler.

hollyit left a reply on Window.onload Vue File?

You need to make sure the component you want to mount is available in the global namespace, as Webpack won't do that by default.



import Vue from 'vue';

window.myMountFunction = function(el) {

    return new Vue({
        el: el,
        template: '<my-component></my-component>'

Then in your HTML or loader script:

window.addEventListener('onload', function () {
    let element = document.createElement('script');
    element,onload = function() {
        myMountFunction("#id of div you want it to appear in or other selector")
    element.src = './main.js';
07 Jun
2 months ago

hollyit left a reply on How To Pass Only Form Data Not The Html From One Component To Another On Submit

Are you using Vue Router? If so then what you want is state storage, which is accomplished with VueX.

If you are doing regular Laravel routes, then you would want to post the data back to laravel, store it with a user session and return it on the confirmation page.

hollyit left a reply on How To Change Title With Vue

Given how your code is now, the page is going to do a full load when the link is clicked, so you need to determine the title based upon the query in the page URL. Something like:

computed: {
    title() {
        let urlParams = new URLSearchParams(window.location.search);
        if (urlParams.has('flestUmmæli') return 'Flest ummæli';
        ... (repeat for each option)
05 Jun
2 months ago

hollyit left a reply on Github Warning | Potential Security Vulnerability Found In The Axios Dependency

Sorry for the delay. 0,19,0 does fix the vulnerability, but there's apparently some breaking changes in it. I haven't noticed what they are yet, and they haven't affected my projects. Just noticed on an issue. So they also released 0.18.1, which also addresses the vulnerability.

30 May
2 months ago

hollyit left a reply on Github Warning | Potential Security Vulnerability Found In The Axios Dependency

FYI - Axios 0.19.0 was released earlier today. You can do a yarn add [email protected] to install it. I've done it to a few sites and had no problems.

13 May
3 months ago

hollyit left a reply on Laravel Vuejs Error: Uncaught ReferenceError: Login Is Not Defined

In app.js:

import routes from './routes.js'
const router = new VueRouter({routes})

To your actual error. Yes you imported Login in your routes.js file, but at the error shows you, it isn't defined in app.js. You need to import things in every file you want to use it in. Just importing it in one file and thinking it will be available everywhere else goes against the whole idea behind modules and keeping the namespaces clean.

03 May
3 months ago

hollyit left a reply on HEADS-UP: PHP Short Tags Are Deprecated In 7.4

@JLRDW - I have been the same way for as long as I can remember (going back to PHP 4 days), but there's still people out there that think saving those 3 keystrokes saves a lot. Of course come PHP8, they'll be grepping out legacy code to fix things.

hollyit started a new conversation HEADS-UP: PHP Short Tags Are Deprecated In 7.4

Information is available here:


NOTE: the templating tag <?= is not affected by this.

17 Dec
8 months ago

hollyit left a reply on Targeting A Checkbox And Toggling Its State.

Instead of toggling it, why not disable the second one?

Check 1:

<input type="checkbox" @click="check1 = !check1" />

Check 2:

<input type="checkbox" :disabled="!check1" />

If you want to go the route you're talking about, then set up a watcher on the model for check 1.

    <input type="checkbox" v-model="check1" />
    <input type="checkbox" v-model="check2" />
export default {

  data() {
    return {
       check1: false,
       check2: false

watch: {
   check1(val) {
       if (val) {check2=true;}

14 Dec
8 months ago

hollyit left a reply on Cannot Add Foreign Key Constraint

You need to disable foreign key checks. I don't use sequel pro, so not sure if there's an option in the export (there is in exports on PHPMyAdmin). If there isn't, it's still an easy fix. Just open the export file and add this to the top:


Basically that disables the foreign key reference checks for the current session (ie: while the import is running). It will let all your tables get created and data imported without validating the foreign key constraints. There are times MySQL can still be fickle about it. If that happens then you're going to have to remove the foreign keys, do your dump and at the end of the dump (and data insert), add the alter commands to re-create the foreign keys. Most likely you're dealing with something simple enough that disabling foreign_key_checks should work for you.

hollyit left a reply on Vue, Dynamic Input Field, Retain/Keep After Refresh

Honestly, I would do the submit and everything inside of Vue. Then the data is going to be there, even if validation fails. It's a little older, but check out the Vue Forms lesson:


If you want to stick with the route you're going, you need to pass the submitted data back into your Vue component someway. The most common is using a prop on the component and passing the data in as JSON.

If you're doing a redirect from the validation, check out old-input on Laravel Requests:


If you're doing it all without redirecting, then it's pretty much the same. You put your data into a variable, say $oldInput. Then in your blade template you would do something like:

<formtest  :existing-supervisors="{!! json_encode($surveyData) !!}"></formtest>

And add that prop to your Vue component and use that to initialize your supervisors data.

10 Nov
9 months ago

hollyit left a reply on Is There Any Way That I Can Speed Up The Ffmpeg Processing Time

Are you sure it's actually FFMPEG and not just slow uploading to s3? The best thing to do would be to process the video file through the command line using straight FFMPEG and then doing the same video file through your app and see if there's a big time difference in processing. I've never used the PHP package for FFMPEG, but I handle a rather large site with tens of thousands of videos that are all processed through FFMPEG triggered from a Node JS server and even the more compressed mobile versions transcode fast. A 1024p video clip that's 10 minutes long is processed in less than 3 minutes, and that's on a low end VPS.

07 Nov
9 months ago

hollyit left a reply on Please Bring Back The Older Laracasts Design

HAHA. I launched a redesign for a site I webmaster for this week. We get around 350,000 page views a day (Drupal site, hopefully will be on Laravel next year). Just this morning I had an email come in from someone claiming to be a "big web developer" and he read my the riot act for not supporting IE 5.5. I think I laughed for about 20 minutes.

05 Nov
9 months ago

hollyit left a reply on Version Jquery

For future reference jQuery.fn.jquery is the sure fire way, in case jQuery wasn't assigned to $.

10 Oct
10 months ago

hollyit left a reply on Storage/app Not Readable CentOS

@adjaf - You can look in /var/log/audit at the log files and see if there's anything from selinux in there. It can be a real pain to configure. It should be ok since the rest of the app is working, but if a flag somehow gets screwed up on a directory, then that causes headaches (you can view flags with ls -Z).

Before that though, I would double check users and permissions. /storage should have +rwx for user and group.

09 Oct
10 months ago

hollyit left a reply on Storage/app Not Readable CentOS

Make sure that path is accessible by PHP (whatever user PHP is running as if using FPM, or the webserver is running as). On CentOS with SELinux, permissions are more sensitive (for good reasons).

hollyit left a reply on Uncaught ReferenceError: $ Is Not Defined At 10:503

It's not working because your inline script doesn't know what $ is yet. That's because you are deferring the load of it (the defer in the script tag). Browsers won't load/execute deferred scripts until after the page is loaded. Your inline script is going to execute before that. Even with $(document).ready, $ is still going to be undefined because jquery hasn't loaded yet.

Typically what I do is put all the scripts in the footer. If I need to call something from a partial, like your layout, then I put any javascript I write in my blade file into a stack, that gets rendered in the footer after all the other scripts.

08 Oct
10 months ago

hollyit left a reply on Hiding Vue Component From All Users Besides Owner

To do it 100% in Vue you will need to pass data in from Laravel to Vue. The easiest way is to set a global variable on your page and send some json encoded data.

    var initialData = {!! json_encode($myData) !!}

Of course always make sure you've got authorization checks on your upload routes that aren't reliant upon Javascript.

01 Oct
10 months ago

hollyit left a reply on Share Classes Between Projects With Composer Does Not Work.

@ImArtur - Symlinks is another way to go. I never had problems doing them on my Macbook, but when home and on my Windows machine, they always had a bunch of problems. I haven't tried since the Fall Creators update came out last year, which was supposed to fix those problems. Might have to give it a try again.

30 Sep
10 months ago

hollyit left a reply on Share Classes Between Projects With Composer Does Not Work.

Your main Laravel project isn't going to know about your packages/composer.json file. By default Composer only recognizes files in the /vendor directory.

There are a couple of plugins for Composer out there that let you specify extra directories that will have the composer.json merged into your main one. Merge plugin is by far the most popular:


Of course if you are only using this for a couple of projects and not planning on open sourcing it, composer might be overkill. Instead I would use git submodules and do everything within in the main projects composer.json file.

29 Sep
10 months ago

hollyit left a reply on Is URL Facade Still Valid In Laravel 5.7?

It's still in there. Sometimes you can find changes in changelog.md inside your Laravel root directory. Other times it's just searching.

If you're using a decent IDE like PHPStorm, then you get autocomplete for things like Facades, which makes life so much easier.

hollyit left a reply on Problem At Display:block;

I noticed you got data-target on your anchor (bars). Are you using Bootstrap and Bootstrap's javascript stuff? If so then you are going to be fighting with the collapse features of Bootstrap.

26 Sep
10 months ago

hollyit left a reply on Laravel API Endpoint Pattern

Personally I would just keep it all as /jobs/{jobid} and perform access checks in a policy (admin can update any, user only where job->user_id === Auth::user()->id)

24 Sep
10 months ago

hollyit left a reply on Vue.js DatePicker With Time

Element has a nice one that doesn't rely on jQuery, moment or I believe any outside libraries:


You don't have to load the entire library. You can just select which components you want.