Extend Laravel package



我已经四处搜索,找不到确定的答案...

我有一个软件包DevDojo聊天,并希望使用我的应用程序扩展它。我知道我必须覆盖功能,以使作曲家更新不会覆盖我的更改。

我该怎么做?

update

public function store(Request $request)
{
    $request->request->add(['body_content' => strip_tags($request->body)]);
    $validator = Validator::make($request->all(), [
        'title'               => 'required|min:5|max:255',
        'body_content'        => 'required|min:10',
        'chatter_category_id' => 'required',
    ]);
    Event::fire(new ChatterBeforeNewDiscussion($request, $validator));
    if (function_exists('chatter_before_new_discussion')) {
        chatter_before_new_discussion($request, $validator);
    }
    if ($validator->fails()) {
        return back()->withErrors($validator)->withInput();
    }
    $user_id = Auth::user()->id;
    if (config('chatter.security.limit_time_between_posts')) {
        if ($this->notEnoughTimeBetweenDiscussion()) {
            $minute_copy = (config('chatter.security.time_between_posts') == 1) ? ' minute' : ' minutes';
            $chatter_alert = [
                'chatter_alert_type' => 'danger',
                'chatter_alert'      => 'In order to prevent spam, please allow at least '.config('chatter.security.time_between_posts').$minute_copy.' in between submitting content.',
                ];
            return redirect('/'.config('chatter.routes.home'))->with($chatter_alert)->withInput();
        }
    }
    // *** Let's gaurantee that we always have a generic slug *** //
    $slug = str_slug($request->title, '-');
    $discussion_exists = Models::discussion()->where('slug', '=', $slug)->first();
    $incrementer = 1;
    $new_slug = $slug;
    while (isset($discussion_exists->id)) {
        $new_slug = $slug.'-'.$incrementer;
        $discussion_exists = Models::discussion()->where('slug', '=', $new_slug)->first();
        $incrementer += 1;
    }
    if ($slug != $new_slug) {
        $slug = $new_slug;
    }
    $new_discussion = [
        'title'               => $request->title,
        'chatter_category_id' => $request->chatter_category_id,
        'user_id'             => $user_id,
        'slug'                => $slug,
        'color'               => $request->color,
        ];
    $category = Models::category()->find($request->chatter_category_id);
    if (!isset($category->slug)) {
        $category = Models::category()->first();
    }
    $discussion = Models::discussion()->create($new_discussion);
    $new_post = [
        'chatter_discussion_id' => $discussion->id,
        'user_id'               => $user_id,
        'body'                  => $request->body,
        ];
    if (config('chatter.editor') == 'simplemde'):
       $new_post['markdown'] = 1;
    endif;
    // add the user to automatically be notified when new posts are submitted
    $discussion->users()->attach($user_id);
    $post = Models::post()->create($new_post);

    if ($post->id) {
        Event::fire(new ChatterAfterNewDiscussion($request));
        if (function_exists('chatter_after_new_discussion')) {
            chatter_after_new_discussion($request);
        }
        if($discussion->status === 1) {
            $chatter_alert = [
                'chatter_alert_type' => 'success',
                'chatter_alert'      => 'Successfully created a new '.config('chatter.titles.discussion').'.',
            ];
            return redirect('/'.config('chatter.routes.home').'/'.config('chatter.routes.discussion').'/'.$category->slug.'/'.$slug)->with($chatter_alert);
        } else {
            $chatter_alert = [
                'chatter_alert_type' => 'info',
                'chatter_alert'      => 'You post has been submitted for approval.',
            ];
            return redirect()->back()->with($chatter_alert);
        }
    } else {
        $chatter_alert = [
            'chatter_alert_type' => 'danger',
            'chatter_alert'      => 'Whoops :( There seems to be a problem creating your '.config('chatter.titles.discussion').'.',
            ];
        return redirect('/'.config('chatter.routes.home').'/'.config('chatter.routes.discussion').'/'.$category->slug.'/'.$slug)->with($chatter_alert);
    }
}

我想修改/覆盖的供应商软件包中有一个存储功能。我希望能够在需要时修改某些功能,或者可能的一部分。请有人指向正确的方向。

如果您的意思是在应用程序中修改类实现,则可以更改类别的解决方法:

app()->bind(PackageClass:class, YourCustomClass::class);

现在您可以创建此自定义类,因此:

class YourCustomClass extends PackageClass
{
   public function packageClassYouWantToChange()
   {
       // here you can modify behavior
   }
}

我建议您阅读有关绑定的更多信息。

当然,很大程度上取决于如何创建类,如果使用new操作员创建了类别,则可能需要更改多个类,但是如果注入了多个类,则应该足以更改此单个类。

相关内容

  • 没有找到相关文章

最新更新