2017-12-27 21 views
0

Ich habe um gesucht und konnte keine definitive Antwort auf diese finden ...Laravel Paket

Ich habe ein Paket DevDojo Chatter und möchte es verlängern meine Anwendung. Ich verstehe, dass ich die Funktionen überschreiben müsste, damit ein Composer-Update meine Änderungen nicht überschreibt.

Wie gehe ich dabei vor?

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); 
    } 
} 

Es gibt eine Speicherfunktion innerhalb des Lieferanten Paket, das ich ändern möchten/außer Kraft setzen. Ich möchte in der Lage sein, einen Teil der Funktion oder gegebenenfalls einen Teil davon zu ändern. Bitte, jemand weist mich in die richtige Richtung.

Antwort

0

Wenn Sie Klassenimplementierung in Ihrer Anwendung bedeuten ändern können Sie die Art und Weise verändern Klasse aufgelöst wird:

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

und jetzt können Sie diese benutzerdefinierte Klasse erstellen, wie so:

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

Ich würde Ihnen raten Sie lesen mehr über binding.

Natürlich hängt viel davon ab, wie Klasse erstellt wird, wenn es mit new Operator erstellt wird, müssen Sie möglicherweise mehrere Klassen ändern, aber wenn es injiziert wird, sollte es genug sein, um diese einzelne Klasse zu ändern.

+0

Das hat wirklich nicht viel geholfen. Ich habe es versucht und es hat nicht funktioniert. – sogeniusio