Nasrul Hazim Bin Mohamad

Laravel: Font Awesome 5

Feb
09

Assalamualaikum / Hi,

Today, I’m going to share how to include the new Font Awesome 5 in your Laravel application. You will need Node.js to do so – see Laravel Mix.

So to start with let’s, consider that you have your fresh Laravel application created, you need to install all front-end dependencies then install Font Awesome 5.

Create resources/assets/js/font-awesome.js and in resources/assets/js/font-awesome.js add the following:

Next, in webpack.mix.js, add the following:

In terminal run npm run production.

Once you’re done, you may use Font Awesome 5 in your application. See Font Awesome 5 for the icons available.

Please take note, this is for free Font Awesome 5. For Pro, you just need the license key and replace the word `free` to `pro` during installing the package

Training on Web Development with Laravel Framework (Advanced) at Barracuda Campus, Cyberjaya (08 Feb 2018). Interested to learn? Check out our website at Cleanique Coders or email us for further enquiry.

Laravel: Notification to Slack

Feb
02

Assalamualaikum / Hi,

Today I will show you how to make a notification to Slack channel.

The approach slightly different you may came across on the internet, but they key point, still rely on Laravel Notification. It’s just how I manage my Slack service.

Configuration

First, we going to start with setting up our environment for Slack Notification by adding the Slack service configuration. Add new services in config/services.php:

Then create a webhook URL in Incoming Webhooks.

In your .env, add SLACK_WEBHOOK_URL, and add the webhook you just created above.

Once you’re done, in your terminal, don’t forget to run php artisan config:cache.

Service

Next step is to setup our Slack service and helper.

The service basically it’s just a simple class to have a webhook URL store in it, and a helper make it simpler to call the Slack service.

We going to create a service class in app/Services/Slack.php:

Then create a helper in app/Support, call it helpers.php. Then add the following and then make sure in composer.json, to load the app/Support/helpers.php:

Then composer dumpautoload -o once you have added the helper.

Notifiable Trait

Laravel provide a trait Illuminate\Notifications\Notifiable, which you can use it anywhere in any classes you want.

In our case, I want to create a class called Notify.php in app/Models.

Did you notice how I use slack() helper to get the Slack Webhook URL? Much convenient. You may want to extend the Slack service class in future, but in our case, we don’t need any as for now.

But again, you can simplify that by using env() function to get the Slack Webhook URL instead of having configuration, helper and Slack service class.

This is just my practice when dealing with 3rd party service – configuration, service class and a helper.

Don’t forget to composer dumpautoload -o once created the class.

Do take note the routeNotificationForSlack(), that is required in order Slack to work. Next will see how to notify to Slack channel.

Notification

This it the last section – now go and create a notification class via artisan – php artisan make:notification NotifyToSlackChannel.

Open up the NotifyToSlackChannel class and do two things:

One, update the via() method to accept only slack in the array.

Two, add a new method called toSlack($notification) and use \Illuminate\Notifications\Messages\SlackMessage to send messages to Slack channel.

Both steps above in following gist:

Let’s try!

So, you are ready to send messages to your Slack channel!

The fastest way to test your Slack notification is using tinker.

Here how I did:

Save it to tinker/notify-to-slack.php.

Then run php artisan tinker tinker/notify-to-slack.php.

That’s it! Working great!

User Cases

Some of user cases might need this type of notification:

  1. Helpdesk system – quick response from support team when get notify on new issues raised.
  2. E-commerce – placing new order, successful payment, out of stock items.
  3. Attendance system – you want know what time your employee come to your office (of course involve some other integration)

And I believe, it’s quite a lot of user cases can be implement, especially those involved with support, request, management.

Feel free to share your idea how we can implement more with Laravel Notification and Slack. 🙂

Happy coding guys!

Laravel: Packager

Jan
28

Assalamualaikum / Hi,

In this post, I will talk more about Laravel Package Generator, Packager.

And today, this morning, I just created Money Wrapper, a Money wrapper, and of course using Packager.

Before we go to the things inside Packager, here the package Money Wrapper provide:

  • Provide a Money helper – money()
  • Intended for Laravel Framework, but can be use outside from Laravel Framework as well.
  • Provide common usage such as:
    1. For Human Readability – RM 1.00, RM 345.00
    2. For Common Display – 1.00, 345.00
    3. For Machine (intended format to store in Database – integer) – 100, 34500
    4. Fixed Exchange Rate Conversion – $ 1 > RM 3.87

So, that’s just briefly about the package, you may go ahead to Money Wrapper to start use it.

Package Skeleton

First thing first, I’ve already give a short update about Packager, a Laravel Package Generator – help to speed up setup Laravel package skeleton.

The command to create new package is simple:

$ packager skeleton "Cleanique Coders" "Demo Package"

Following are the sample package generated:

Package Skeleton Generated

And other than generate the skeleton for you, it’s also install all the dependencies and initialise git! Fuh! Save lot time!!

The Skeleton Details

Files and Directories

As you can see, composer(including lock), LICENSE.txt, phpunit.xml, README.md files included in the package.

Then the structure of having src, tests and vendor already in place.

Source

Taking a bit deeper into src directory, we have the Facade and Service Provider. This is by default generated by the package. Come along in the directory is Support directory, which usually in the directory we have a helper file – which already auto loaded during package initialisation! Very helpful!

Test

Next, as for tests, the tests directory already setup and have a default TestCase.php, which our main file. This TestCase.php, we should extend from it when creating new test(make sure to have the suffix Test.php of the file name – you may change in phpunit.xml if you wanted to). TestCase.php also already load up your package service provider – so you don’t need to worry setting up migration. I would probably add some other setup like database settings to use SQLite in future.

I’ve also added Code Dungeon, PHPUnit Result Printer and Orchestra TestBench which both would be helpful in your test development for Laravel package.

Conclusion

As the conclusion, you might experienced (if you already have previously write packages), where you have missed out one or two things, or even, kinda difficult to setup one by one for your Laravel package – this is absolutely a solution for you!

For me, I’m bit lazy, and kinda irritate to keep on repeating setup the same thing, so I’ve decided to create the Packager!

And for me again, if i’m not satisfied with what’s exist, I’ll build it myself (of course with Allah’s will, insyaAllah).

When there’s a will and efforts, there’s always a result.

Hope this Packager, will help more people to learn not just about creating Laravel package, also, build a good structure and standard across Laravel packages. I did study how Laravel packages available setup, including those from Spatie, and many more. So this is the result.

Hint: Will add up for updates on Packager. Stay tuned!

AWS: S3 – Upload File

Jan
15

Assalamualaikum / Hi,

Just a simple note on how to upload file(s) to AWS S3. First time working with AWS S3 – it’s not my account, but you get the idea how simple it is. 🙂

Laravel: Activation Account by E-mail – Part 2

Jan
13

Continue from previous post, next we going to setup the middleware in order to check either the user already activate the account or not.

If user already activate the account, allow to enter our application, else redirect to request for another activation e-mail.

Laravel: Activation Account by E-mail – Part 1

Jan
13

From previous post, we extend the usage of Notifications, Event and Listener to have a mechanism where user need to activate their account in order to use the application.

In this Part 1, we just setup the Notification, Event and Listener. Part 2 will be about how do we check if user already activate their account or not.

Laravel: Create Welcome Email

Jan
13

A quick post on how to setup a welcome email on user registration.

Make sure you have a mailtrap.io account for testing purpose, or production you may use SparkPost, or GMail SMTP, or any provider should work with proper .env on mail configuration.

Laravel: Billplz Helper

Jan
12

Billplz is a simple cash solution to send bills and collect payments in real-time.

There’s already a package available for PHP.

We going to create a wrapper and helper for Laravel application for the Billplz.

First, create a config file for Billplz – config/billplz.php

Then create a utility class in app/Utilities directory:

Lastly, create a helper in app/Support directory named helpers.php, and add the following command.

Now you’re done setting up your Billplz helper. You just need to setup BILLPLZ_API_KEY and BILLPLZ_VERSION in your .env to start use the Billplz helper.

Following are some example of the usage:

Billplz also provide sandbox for you to test. Do refer Billplz API documentation for more details.

Laravel: Package Generator

Dec
31

Assalamualaikum / Hi,

It’s been a long time, I wan to update my Laravel Package Generator and now it’s officially updated with version 2.0.2.

Lots of experience, study case, observation, setting up things in Laravel package. Now I believe, it’s ready to speed up your Laravel Package Development.

So, what the Packager do? Basically it creates a basic skeleton of Laravel package which consist of:

  1. Service Provider
  2. Facade
  3. README – with Installation instruction, License Term ready! Other details you need to update manually.
  4. Dependencies – phpunit/phpunit, orchestra/testbench and codedungeon/phpunit-result-printer
  5. LICENSE
  6. phpunit.xml
  7. helpers

See my tweet on this package

That’s all, thanks!

Laravel: Blueprint Macro

Dec
30

Next, the thing that I want to share is how I create Blueprint Macro. Similar to my previous posts on Response and Route.

But this time, we going to add more functionality to Blueprint which used in migrations.

Update your user migration file:

Now your code will be much cleaner.

Feel free to fork and contribute to Blueprint Macro.