1. Go to this page and download the library: Download neurony/laravel-url library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
neurony / laravel-url example snippets
namespace App;
use Illuminate\Database\Eloquent\Model;
use Neurony\Url\Options\UrlOptions;
use Neurony\Url\Traits\HasUrl;
class YourModel extends Model
{
use HasUrl;
/**
* Get the options for generating the url.
*
* @return UrlOptions
*/
public function getUrlOptions() : UrlOptions
{
return UrlOptions::instance()
->routeUrlTo(YourController::class, 'show') // mandatory --- a controller and action specifying where to dispatch the request when the custom URL is accessed in the browser
->generateUrlSlugFrom('name') // mandatory --- a field present in your model's table from which to generate the slug that will be later used to generate the URL
->saveUrlSlugTo('slug'); // mandatory --- a field present in your model's table that will be used to store the slug
}
}
namespace App\Controllers;
use Illuminate\Routing\Controller;
use Neurony\Url\Models\Url;
class PostsController extends Controller
{
public function show()
{
$post = Url::getUrlableOrFail();
return view('posts.show')->with([
'post' => $post
]);
}
}
/**
* Get the options for generating the url.
*
* @return UrlOptions
*/
public function getUrlOptions() : UrlOptions
{
return UrlOptions::instance()
->routeUrlTo(YourController::class, 'show')
->generateUrlSlugFrom('name')
->saveUrlSlugTo('slug')
->prefixUrlWith(function ($prefix, $model) {
foreach ($model->parents as $parent) {
$prefix[] = $parent->slug;
}
return implode('/' , (array)$prefix);
});
}
...->prefixUrlWith('some-prefix'); // URL will be "some-prefix/your-model-slug"
...->prefixUrlWith(['some', 'prefix']); // URL will be "some/prefix/your-model-slug"
/**
* Get the options for generating the url.
*
* @return UrlOptions
*/
public function getUrlOptions() : UrlOptions
{
return UrlOptions::instance()
->routeUrlTo(YourController::class, 'show')
->generateUrlSlugFrom('name')
->saveUrlSlugTo('slug')
->suffixUrlWith(function ($suffix, $model) {
foreach ($model->children as $child) {
$prefix[] = $child->slug;
}
return implode('/' , (array)$prefix);
});
}
...->suffixUrlWith('some-suffix'); // URL will be "your-model-slug/some-suffix"
...->suffixUrlWith(['some', 'suffix']); // URL will be "your-model-slug/some/suffix"
/**
* Get the options for generating the url.
*
* @return UrlOptions
*/
public function getUrlOptions() : UrlOptions
{
return UrlOptions::instance()
->routeUrlTo(YourController::class, 'show')
->generateUrlSlugFrom('name')
->saveUrlSlugTo('slug')
->glueUrlWith('_');
}
/**
* Get the options for generating the url.
*
* @return UrlOptions
*/
public function getUrlOptions() : UrlOptions
{
return UrlOptions::instance()
->routeUrlTo(YourController::class, 'show')
->generateUrlSlugFrom('name')
->saveUrlSlugTo('slug')
->doNotUpdateCascading();
}
// create a model record without creating an URL for it
$model = (new YourModel)->doNotGenerateUrl()->create(...);
// update a model record without updating its URL
$model->doNotGenerateUrl()->update(...);