2017-12-20 6 views
1

私はLarvelプロジェクトに取り組んでいます。このプロジェクトは、私は、顧客ののlaravelで複数のタイプのユーザーに共通の機能を作成する方法5.4

CustomerController.php for customer 
AdminController.php for admin 

それぞれ、すべてのモジュールはまた、管理者から操作することができ、それぞれのコントローラを持っている二人のユーザ顧客とadminの

1) Admin 
2) Customer 

を持っています。 顧客のパネルからも管理パネルからも同様の顧客を追加でき、レコードはユーザーのテーブルに挿入されます。

私はコントローラが両方のために異なっていると述べました。それで、ユーザーの詳細を追加したり編集したりするために、80%同じコードを持つ2つの関数、AdminController.phpファイルとCustomerConroller.phpファイルの関数を書く必要があります。

この冗長コードを単一のソースから操作します。

私はCRUD操作にモデルファイルを使用する必要がありますか?

+0

テーブルにadminまたはstatusカラムを使用しましたか?この列を使用して、どこでも使用できるミドルウェアを作成できます。 –

+0

adminsテーブルから管理レコードが管理されていないため、複数の管理者があります。 –

+0

'app( 'App \ Http \ Controllers \ AdminController') - > yourFunctionName();'これを使うと、同じコードを書く必要はありません。その関数からの呼び出し! –

答えて

0

laravelでロールと許可機能を使用できます。 laravelでロールと権限を実装する方法の詳細については、linkを参照してください。

+0

実際には役割とアクセス許可に関するものではなく、技術面から管理者だけでなく顧客にも共通の機能を使用するためには、どのようなアプローチをとるべきかを言います。 –

+0

モデルファイルに共通のメソッドを作成して、どこでも使用できます。 –

0

Service patternを見てみると、ロジックを別のレイヤー(サービスレイヤー)に抽象化しているので、将来的に変更する必要がある場合は、複数の場所で簡単に使用できます。複数の場所ではなく、1つの場所を変更するだけで済みます。

あなたが複数の場所でクーポンを作成したい場合たとえば、CreateCouponServiceはコントローラに注入することができ、あなただけ(記事から取って)次のコードのようなサービスを呼び出すことができます。

public function store(CreateCoupon $request) 
{ 
    $this->createCouponService->make($request); 

    return back()->with(['success' => 'Congratulations!']); 
} 

モデルとコントローラの間の依存関係を切り離すためのRepository patternもあります。

これらのすべてが必須ではなく、非常に単純なCRUDアプリケーションしか持っていない場合は、過剰である可能性があります。

私はあなたがあなたの AdminControllerにモデルに

を使うべきだと思う

0

CustomerControllerあなたは静的関数に

//your controller method 
public function store(Request $request){ 
    Yourmodel::save_request($request); 
    return 'save'; 
} 

// your model class 
class Yourmodel{ 
    public static function save_request($request){ 
    // do sometining 
    } 
} 
0

を使用することができますが、一般的な機能で、メインクラスを作成し、 CustomerController AdminController

の継承を使用することができます
関連する問題