hollyit

hollyit

Member Since 2 Years Ago

Experience Points
14,180
Total
Experience

820 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
78
Lessons
Completed
Best Reply Awards
10
Best Reply
Awards
  • 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.

    Subscriber

    Earned if you are a paying Laracasts subscriber.

  • lifer-token Created with Sketch.

    Lifer

    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.

Level 3
14,180 XP
Sep
30
2 weeks ago
Activity icon

Replied to Adding V-model To Non-input Custom Component In Vue?

You can use v-model on anything. All it is is syntactic sugar for :value and @input. Just add a watcher to interval and then do a this.$emit('input', val).

Sep
25
3 weeks ago
Activity icon

Replied to Net::ERR_INSECURE_RESPONSE

If the certificate was issued using SHA-1, it will trigger this error in Chrome. Only thing they can do is update the certificate to something more secure. SHA-1 certificates stopped being issued in 2016.

Sep
24
3 weeks ago
Activity icon

Replied to Youtube API Data Foreach

Calling to the YouTube api like that is going to slow things down. You also risk rate limits and getting blocked. You should cache everything from the API and refresh it every so often. Even if you can live with the delay in rendering that page, if you are putting this on a live site, then you will face huge problems down the road.

Sep
17
1 month ago
Activity icon

Replied to Vue Search Select With 16k + Options

Second @ekrist1 with multiselect. They even have an example of what you are wanting to do.

https://vue-multiselect.js.org/#sub-asynchronous-select

Sep
10
1 month ago
Activity icon

Replied to Understanding Const Inside And Outside Of Vue Component

Using your constant example, change it from arrow notation to a full function:

const titleTaken = function (value, component){How do I access my returned data}

Now inside of the function you can access this, which is actually the component.

Sep
08
1 month ago
Activity icon

Replied to Setting Up A Laravel Dev Machine On Windows 10 With WSL (Windows Subsystem For Linux) Enabled

How are you finding performance under WSL? Last couple times I tried it, the IO performance issues just hurt. I was noticing build times on some Vue stuff taking 4-5 times longer than just doing it straight on Windows. Even just doing straight Laravel stuff I saw a big slowdown from my regular Windows (using Neard) flow. One app that would take 80-100ms to respond on Windows took over 500ms to respond on WSL.

I would really love to be able to switch totally to WSL, but right now am holding out for WSL2. The early reports on it are really promising.

Aug
31
1 month ago
Activity icon

Replied to Get Old Model Instance And Values When Updating.

Hook into the saved event (not updated) and then do a $model->getChanges(). That will give you an arrray of what changed (key=>old_value). You need to do it on the saved event because after Eloquent calls that event, a syncChanges() is called (as opposed to an updated event, where syncChanges() is called before the event).

Aug
30
1 month ago
Activity icon

Replied to Remove HTML From JSON Object

That site is not a true API. They are a scrapping service, that just parses out HTML code and tries to come up with an API. There are enormous problems basing anything off of that service. The two biggies:

  1. You could be violating the source sites terms of service, hence opening yourself to legal jeopardy

  2. If the original site does a redesign, or even just change a bit of HTML, well your API is now broken.

That apis.is site is actually opened source and you can view their code, including the endpoint for the flight here:

https://github.com/apis-is/apis/blob/master/endpoints/flight/index.js

Just because they do some DOM walking and through it in a JSON format doesn't make it an API, same way as if I take some wheels off a grocery cart and put them on a wood box, it doesn't make a car. Your best bet would be to either look for a true API, or write your own DOM parser from that site (though issue 1 above will remain). You can use PHP's built in DOM parsing classes, or a 3rd party like Symfony's DOMCrawler package.

Aug
23
1 month ago
Activity icon

Replied to Stripe Webhook Route In Api.php Or Web.php And Exclude Csrf

The only place you might have a problem is with Throttle, depending on how many webhooks you're listening too. Actually I started sometime back creating an entire webhooks route. I just create the group in my RouteServiceProvider and load a webhooks.php from /routes. I don't run any middleware on it by default, just adding what I need for each specific webhook (ie: webhooks/stripe gets the Stripe signature check MW). There's just no need for sessions or all the cookie stuff to run on your webhook routes.

Aug
07
2 months ago
Activity icon

Replied to 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.

Aug
05
2 months ago
Activity icon

Replied to 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.

https://neard.io/

Activity icon

Replied to 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.

https://dev.mysql.com/doc/refman/5.5/en/create-user.html

Jul
23
2 months ago
Activity icon

Replied to 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.

https://webpack.js.org/guides/lazy-loading/

Activity icon

Replied to 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.

Jul
12
3 months ago
Activity icon

Replied to 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.

Activity icon

Replied to 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).

Jul
11
3 months ago
Activity icon

Replied to 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.

Activity icon

Replied to 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.

Jul
10
3 months ago
Activity icon

Replied to 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.

Jul
08
3 months ago
Activity icon

Replied to 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.

Jul
04
3 months ago
Activity icon

Replied to How Can I Have Custom Rule In A Pipe?

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

https://laravel.com/docs/5.8/validation#using-extensions

Jul
03
3 months ago
Activity icon

Replied to 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.

Jun
28
3 months ago
Activity icon

Replied to 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.

Jun
27
3 months ago
Activity icon

Replied to 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:

https://neard.io/

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.

Activity icon

Replied to 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

Jun
24
3 months ago
Activity icon

Replied to 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 127.0.0.1

Activity icon

Replied to 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.

Jun
21
3 months ago
Activity icon

Replied to 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.

Jun
20
3 months ago
Activity icon

Replied to 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.

Jun
19
3 months ago
Activity icon

Replied to 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.

Activity icon

Replied to 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).

Activity icon

Replied to 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.

Activity icon

Replied to 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>
</tr>
Jun
09
4 months ago
Activity icon

Replied to 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.

Jun
08
4 months ago
Activity icon

Replied to 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.

Activity icon

Replied to 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.

ie:

main.js

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';
    document.head.appendChild(element);
});
Jun
07
4 months ago
Activity icon

Replied to 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.

Activity icon

Replied to 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)
    }
}
Jun
05
4 months ago
Activity icon

Replied to 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.

May
30
4 months ago
Activity icon

Replied to 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.

May
13
5 months ago
Activity icon

Replied to 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.

May
03
5 months ago
Activity icon

Replied to 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.

Activity icon

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

Information is available here:

https://wiki.php.net/rfc/deprecate_php_short_tags

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

Dec
17
10 months ago
Activity icon

Replied to 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.

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

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

watch: {
   check1(val) {
       if (val) {check2=true;}
    }
  
  }
    
}
</script>

Dec
14
10 months ago
Activity icon

Replied to 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:

SET FOREIGN_KEY_CHECKS=0;

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.

Activity icon

Replied to 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:

https://laracasts.com/series/learn-vue-2-step-by-step/episodes/19

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:

https://laravel.com/docs/5.7/requests#old-input

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.

Nov
10
11 months ago
Activity icon

Replied to 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.

Nov
07
11 months ago
Activity icon

Replied to 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.

Nov
05
11 months ago
Activity icon

Replied to Version Jquery

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

Oct
10
1 year ago
Activity icon

Replied to 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.