【问题标题】:Auto update Slug field value based on specific function in Laravel根据 Laravel 中的特定功能自动更新 Slug 字段值
【发布时间】:2020-07-05 05:45:57
【问题描述】:

我正在使用 Laravel 6 构建一个博客系统,我有一个函数可以生成一个独特的 Slug。

我想做的是创建帖子表单中的一个字段,当我在标题字段上键入时,该字段将自动更新。

我想在标题字段上键入时从 Slug 函数生成 Slug 字段值。

那么有没有办法使用 jQuery 或其他方法来做到这一点?

弹头函数

public function slug($string, $separator = '-') {
    if (is_null($string)) {
        return "";
    }

    $string = trim($string);

    $string = mb_strtolower($string, "UTF-8");

    $string = preg_replace("/[^a-z0-9_\sءاأإآؤئبتثجحخدذرزسشصضطظعغفقكلمنهويةى]#u/", "", $string);

    $string = preg_replace("/[\s-]+/", " ", $string);

    $string = preg_replace("/[\s_]/", $separator, $string);

    return $string;
}

存储方法

public function store(Request $request)
{
    $this->validate($request, array(
        'title'         => 'required|max:255',
        'body'          => 'required',
    ));
    $post = new Post;
    $post->title = $request->input('title');
    $post->body = $request->input('body');

    $post->save();

    return redirect('admin/posts')->with('success', 'post is successfully saved');
}

查看

    <form action="{{ route('posts.store') }}" method="post">
    @csrf
    <div class="row gutters-tiny">
                    <div class="col-md-7">
                            <div class="block block-rounded block-themed">
                                <div class="block-header bg-gd-primary">
                                    <div class="block-options">
                                        <button type="submit" class="btn btn-sm btn-alt-primary">
                                            <i class="fa fa-save mr-5"></i> Save
                                        </button>
                                    </div>
                                </div>
                                <div class="block-content block-content-full">
                                    <div class="form-group row">
                                        <label class="col-12" for="ecom-product-name">Title</label>
                                        <div class="col-12">
                                            <input type="text" class="form-control" id="title" name="title"  value="">
                                        </div>
                                    </div>

                                    <div class="form-group row">
                                        <label class="col-12">Body</label>
                                        <div class="col-12">
                                            <textarea class="form-control" id="body" name="body" rows="8"></textarea>
                                        </div>
                                    </div>
                                </div>
                            </div>
                    </div>
                    </div>
                    </form>

【问题讨论】:

    标签: jquery laravel laravel-5 laravel-6 laravel-6.2


    【解决方案1】:

    您要在代码中更改这两个函数,我在 laravel 项目中尝试此代码。

    弹头功能:

    public function slug($string, $separator = '-') {
        if (is_null($string)) {
            return "";
        }
    
        $string = trim($string);
    
        $string = mb_strtolower($string, "UTF-8");
    
        $string = preg_replace("/[^a-z0-9_\sءاأإآؤئبتثجحخدذرزسشصضطظعغفقكلمنهويةى]#u/", "", $string);
    
        $string = preg_replace("/[\s-]+/", " ", $string);
    
        $string = preg_replace("/[\s_]/", $separator, $string);
    
        return slug_str($string).'-'.rand(0,9);
    }
    

    存储方法:

    public function store(Request $request)
    {
        $this->validate($request, array(
            'title'         => 'required|max:255',
            'body'          => 'required',
        ));
        $post = new Post;
        $post->title = $request->input('title');
        $post->body = $request->input('body');
        $post->slug = slug($request->input('title'));
        $post->save();
        return redirect('admin/posts')->with('success', 'post is successfully saved');
    }
    

    参考网址:click hear

    【讨论】:

      猜你喜欢
      • 2020-02-25
      • 2021-04-20
      • 1970-01-01
      • 1970-01-01
      • 2022-09-30
      • 2012-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多