用小写字母laravel助手替换小写字母的最佳方式是什么?

问题描述 投票:0回答:1

我想改善路线生成在我的laravel项目中。实际上,我对自己的解决方案不满意,也不在最佳实践中,因为我在生成url的任何地方都对其进行了更改。我认为那是错误的。

我需要在刀片模板中生成一些网址

  • 仅应生成小写网址
  • 我将替换一些字母,例如ä-> ae
  • 解析日期

什么是“最佳实践”?

谢谢。

我尝试直接在刀片文件中进行。

@foreach($foods as $food)
            <a href="{{route('food.show', [
            'name' => $food->name,
            'date' => App\Models\Food::replaceCharacters(Str::lower(Carbon\Carbon::parse($food->urlDate)->isoFormat('DD-MMMM-YYYY')))])}}">
              Linkname}}
            </a>
        @endforeach
laravel replace routes lowercase
1个回答
0
投票

Laravel有一些本机帮助程序可以帮助您实现此目标。主要是Str::slug方法。

这是它的源代码:

Str::slug

此帮助程序足以生成SEO友好的URL,但是此答案仅适用于第一个和第二个要点。对于其余的部分,我认为最好的解决方案是在/** * Generate a URL friendly "slug" from a given string. * * @param string $title * @param string $separator * @param string|null $language * @return string */ public static function slug($title, $separator = '-', $language = 'en') { $title = $language ? static::ascii($title, $language) : $title; // Convert all dashes/underscores into separator $flip = $separator === '-' ? '_' : '-'; $title = preg_replace('!['.preg_quote($flip).']+!u', $separator, $title); // Replace @ with the word 'at' $title = str_replace('@', $separator.'at'.$separator, $title); // Remove all characters that are not the separator, letters, numbers, or whitespace. $title = preg_replace('![^'.preg_quote($separator).'\pL\pN\s]+!u', '', static::lower($title)); // Replace all separator characters and whitespace by a single separator $title = preg_replace('!['.preg_quote($separator).'\s]+!u', $separator, $title); return trim($title, $separator); } 类中使用Accessor

以这种方式,当您访问Food属性或name属性时,您会收到一个已经格式化的字符串。例如:

urlDate

示例输入:use Illuminate\Support\Str; [...] public function getNameAttribute($value) { // Return the slug for a SEO friendly parameter return Str::slug($value); }

示例输出:My äwe$oMe food|name

对于日期,您只应在此代码中添加格式部分。

© www.soinside.com 2019 - 2024. All rights reserved.