Skip to content

Instantly share code, notes, and snippets.

View martinbean's full-sized avatar

Martin Bean martinbean

View GitHub Profile
@martinbean
martinbean / Shareable.php
Created January 14, 2024 20:56
Shareable
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\MorphTo;
class Shareable extends Model
{
public function source(): MorphTo
@martinbean
martinbean / Stack.php
Created September 8, 2023 11:17
Laravel stack Blade component
<?php
namespace App\View\Components;
use Illuminate\Contracts\View\View;
use Illuminate\View\Component;
use InvalidArgumentException;
class Stack extends Component
{
@martinbean
martinbean / error-bag.ts
Created August 10, 2023 16:23
Vue.js form object
export default class {
public errors: Record<string, string[]>;
constructor(errors: Record<string, string[]> = []) {
this.errors = errors;
}
set(errors: Record<string, string[]>) {
this.errors = errors;
}
@martinbean
martinbean / Invitation.php
Created March 29, 2023 12:33
Basic Laravel-based invitation system
<?php
namespace App\Models;
class Invitation extends Model
{
protected $fillable = [
'token',
'email',
];
@martinbean
martinbean / AppServiceProvider.php
Created June 28, 2021 10:53
Caching settings repository
<?php
namespace App\Providers;
use App\Repositories\SettingsRepository;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
public function register()
### Keybase proof
I hereby claim:
* I am martinbean on github.
* I am martinbean (https://keybase.io/martinbean) on keybase.
* I have a public key ASB2_ZA3DkCT9MjQuO8huSLkj8dOOxr8Cyy_bMrG3HAVJQo
To claim this, I am signing this object:
@martinbean
martinbean / CartPage.php
Created March 15, 2019 22:06
Laravel Dusk example test
<?php
namespace Tests\Browser\Pages;
use Laravel\Dusk\Browser;
class CartPage extends Page
{
/**
* {@inheritDoc}
@martinbean
martinbean / LogNameHandler.php
Last active March 15, 2019 14:42
Mapping jobs to handler classes in Lumen
<?php
namespace App\Handlers\Jobs;
use App\Jobs\LogNameJob;
use Illuminate\Support\Facades\Log;
class LogNameHandler
{
public function __construct()
@martinbean
martinbean / styles.css
Created March 2, 2019 19:38
End mark in HTML
p:last-of-type::after {
content: "\0020 \220E"
}
@martinbean
martinbean / component.js
Created November 10, 2018 19:37
Promise-based Vue.js confirmation dialog mixin
import confirm from './confirm';
export default {
mixins: [
confirm
],
methods: {
onDelete() {
this.confirm('Are you sure you wish to delete this item?').then(() => {
// Delete item