123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209 |
- <?php
- return [
- /**
- * What attributes do we use to build the slug?
- * This can be a single field, like "name" which will build a slug from:
- *
- * $model->name;
- *
- * Or it can be an array of fields, like ("name", "company"), which builds a slug from:
- *
- * $model->name . ' ' . $model->company;
- *
- * If you've defined custom getters in your model, you can use those too,
- * since Eloquent will call them when you request a custom attribute.
- *
- * Defaults to null, which uses the toString() method on your model.
- */
- 'source' => null,
- /**
- * The maximum length of a generated slug. Defaults to "null", which means
- * no length restrictions are enforced. Set it to a positive integer if you
- * want to make sure your slugs aren't too long.
- */
- 'maxLength' => null,
- /**
- * If you are setting a maximum length on your slugs, you may not want the
- * truncated string to split a word in half. The default setting of "true"
- * will ensure this, e.g. with a maxLength of 12:
- *
- * "my source string" -> "my-source"
- *
- * Setting it to "false" will simply truncate the generated slug at the
- * desired length, e.g.:
- *
- * "my source string" -> "my-source-st"
- */
- 'maxLengthKeepWords' => true,
- /**
- * If left to "null", then use the cocur/slugify package to generate the slug
- * (with the separator defined below).
- *
- * Set this to a closure that accepts two parameters (string and separator)
- * to define a custom slugger. e.g.:
- *
- * 'method' => function( $string, $sep ) {
- * return preg_replace('/[^a-z]+/i', $sep, $string);
- * },
- *
- * Otherwise, this will be treated as a callable to be used. e.g.:
- *
- * 'method' => array('Str','slug'),
- */
- 'method' => function($string, $separator = '-')
- {
- $_transliteration = array(
- '/ä|æ|ǽ/' => 'ae',
- '/ö|œ/' => 'oe',
- '/ü/' => 'ue',
- '/Ä/' => 'Ae',
- '/Ü/' => 'Ue',
- '/Ö/' => 'Oe',
- '/À|Á|Â|Ã|Å|Ǻ|Ā|Ă|Ą|Ǎ/' => 'A',
- '/à|á|â|ã|å|ǻ|ā|ă|ą|ǎ|ª/' => 'a',
- '/Ç|Ć|Ĉ|Ċ|Č/' => 'C',
- '/ç|ć|ĉ|ċ|č/' => 'c',
- '/Ð|Ď|Đ/' => 'D',
- '/ð|ď|đ/' => 'd',
- '/È|É|Ê|Ë|Ē|Ĕ|Ė|Ę|Ě/' => 'E',
- '/è|é|ê|ë|ē|ĕ|ė|ę|ě/' => 'e',
- '/Ĝ|Ğ|Ġ|Ģ/' => 'G',
- '/ĝ|ğ|ġ|ģ/' => 'g',
- '/Ĥ|Ħ/' => 'H',
- '/ĥ|ħ/' => 'h',
- '/Ì|Í|Î|Ï|Ĩ|Ī|Ĭ|Ǐ|Į|İ/' => 'I',
- '/ì|í|î|ï|ĩ|ī|ĭ|ǐ|į|ı/' => 'i',
- '/Ĵ/' => 'J',
- '/ĵ/' => 'j',
- '/Ķ/' => 'K',
- '/ķ/' => 'k',
- '/Ĺ|Ļ|Ľ|Ŀ|Ł/' => 'L',
- '/ĺ|ļ|ľ|ŀ|ł/' => 'l',
- '/Ñ|Ń|Ņ|Ň/' => 'N',
- '/ñ|ń|ņ|ň|ʼn/' => 'n',
- '/Ò|Ó|Ô|Õ|Ō|Ŏ|Ǒ|Ő|Ơ|Ø|Ǿ/' => 'O',
- '/ò|ó|ô|õ|ō|ŏ|ǒ|ő|ơ|ø|ǿ|º/' => 'o',
- '/Ŕ|Ŗ|Ř/' => 'R',
- '/ŕ|ŗ|ř/' => 'r',
- '/Ś|Ŝ|Ş|Ș|Š/' => 'S',
- '/ś|ŝ|ş|ș|š|ſ/' => 's',
- '/Ţ|Ț|Ť|Ŧ/' => 'T',
- '/ţ|ț|ť|ŧ/' => 't',
- '/Ù|Ú|Û|Ũ|Ū|Ŭ|Ů|Ű|Ų|Ư|Ǔ|Ǖ|Ǘ|Ǚ|Ǜ/' => 'U',
- '/ù|ú|û|ũ|ū|ŭ|ů|ű|ų|ư|ǔ|ǖ|ǘ|ǚ|ǜ/' => 'u',
- '/Ý|Ÿ|Ŷ/' => 'Y',
- '/ý|ÿ|ŷ/' => 'y',
- '/Ŵ/' => 'W',
- '/ŵ/' => 'w',
- '/Ź|Ż|Ž/' => 'Z',
- '/ź|ż|ž/' => 'z',
- '/Æ|Ǽ/' => 'AE',
- '/ß/' => 'ss',
- '/IJ/' => 'IJ',
- '/ij/' => 'ij',
- '/Œ/' => 'OE',
- '/ƒ/' => 'f'
- );
- $quotedReplacement = preg_quote($separator, '/');
- $merge = array(
- '/[^\s\p{Zs}\p{Ll}\p{Lm}\p{Lo}\p{Lt}\p{Lu}\p{Nd}]/mu' => ' ',
- '/[\s\p{Zs}]+/mu' => $separator,
- sprintf('/^[%s]+|[%s]+$/', $quotedReplacement, $quotedReplacement) => '',
- );
- $map = $_transliteration + $merge;
- unset($_transliteration);
- return mb_strtolower(preg_replace(array_keys($map), array_values($map), $string));
- },
- /**
- * Separator to use when generating slugs. Defaults to a hyphen.
- */
- 'separator' => '-',
- /**
- * Enforce uniqueness of slugs? Defaults to true.
- * If a generated slug already exists, an incremental numeric
- * value will be appended to the end until a unique slug is found. e.g.:
- *
- * my-slug
- * my-slug-1
- * my-slug-2
- */
- 'unique' => true,
- /**
- * If you are enforcing unique slugs, the default is to add an
- * incremental value to the end of the base slug. Alternatively, you
- * can change this value to a closure that accepts three parameters:
- * the base slug, the separator, and a Collection of the other
- * "similar" slugs. The closure should return the new unique
- * suffix to append to the slug.
- */
- 'uniqueSuffix' => null,
- /**
- * Should we include the trashed items when generating a unique slug?
- * This only applies if the softDelete property is set for the Eloquent model.
- * If set to "false", then a new slug could duplicate one that exists on a trashed model.
- * If set to "true", then uniqueness is enforced across trashed and existing models.
- */
- 'includeTrashed' => false,
- /**
- * An array of slug names that can never be used for this model,
- * e.g. to prevent collisions with existing routes or controller methods, etc..
- * Defaults to null (i.e. no reserved names).
- * Can be a static array, e.g.:
- *
- * 'reserved' => array('add', 'delete'),
- *
- * or a closure that returns an array of reserved names.
- * If using a closure, it will accept one parameter: the model itself, and should
- * return an array of reserved names, or null. e.g.
- *
- * 'reserved' => function( Model $model) {
- * return $model->some_method_that_returns_an_array();
- * }
- *
- * In the case of a slug that gets generated with one of these reserved names,
- * we will do:
- *
- * $slug .= $separator + "1"
- *
- * and continue from there.
- */
- 'reserved' => null,
- /**
- * Whether to update the slug value when a model is being
- * re-saved (i.e. already exists). Defaults to false, which
- * means slugs are not updated.
- *
- * Be careful! If you are using slugs to generate URLs, then
- * updating your slug automatically might change your URLs which
- * is probably not a good idea from an SEO point of view.
- * Only set this to true if you understand the possible consequences.
- */
- 'onUpdate' => false,
- ];
|