扩展Laravel包

我周围中搜索,找不到这一个明确的答案......扩展Laravel包

我有一个包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

}

}

我会建议你可以阅读更多关于binding。

当然很多依赖于如何创建类,如果它是使用new运算符创建的,您可能需要更改多个类,但是如果它被注入,它应该足以改变这个类。

以上是 扩展Laravel包 的全部内容, 来源链接: utcz.com/qa/266355.html

回到顶部