2016-04-27 5 views
0

シンプルなCRMishアプリケーションを開発しています。タスクとクライアントを作成できるとします。どちらも独立して作成できますが、プロセス内で作成することもできます。私はcreate.blade.phpと呼ばれるこれらの2つのアクションについての意見を持っています。同じコントローラのアクションに関連するビューの条件付きレンダリングの処理方法は?

たとえば、ある時点で、顧客を選択/顧客を作成してモーダルダイアログを開く(ある顧客を選び、それを1ステップでタスクに割り当てることができます)。 )。そして、ここでそれは泥で始まります。私はフォーム部分をcreate.blade.phpからモーダルダイアログでレンダリングしたいので、これを取得する必要があります。アクションを作成します。これは通常、master.blade.phpを拡張するフルフォームを返します。

どのようにこのような設計上の問題を処理しますか?今のところ、ちょっと無邪気なスイッチか、前にreturn view()私のアクションを作成するしかし、私はそれがいつかスパゲッティcarbonaraのように見えることを知っています。次のように

私のアイデアがあります:

  • IFSは/限り、それが読めるだと切り替え、それだけで 異なるビューを(返却についてですが、あなたはそれがいくつかの点で、ロジック、異なる 変数などが含まれます知っています。 。)
  • いくつかの要求クラスへの移行IFS /スイッチ・ロジックおよびので、私のコントローラが少し きれいにし、「AJAX」要求のための別のクラスを作成し、「正常な」要求SRP
  • に従いますreturn view($request->getView())を呼び出します。
  • 上記と同じですが、 フォームなどで使用されているデータをフェッチするロジックはどちらのシナリオでも共通しているので、私はBaseControllerの抽象クラス を作成し、これを通常の " リクエスト"と "ajax "要求シナリオ。これは、最も先進的な考えですが、私は、私はSRPに従うだけでなく、私は、共通のデータを取得するコードの重複の原因 を削除すると思います は抽象クラスで

を置かれるあなたはこれをどのように扱うかのいずれかの他のアイデアを持っていますか?

+1

**モーダル-dialog.blade.phpを作るには、**です。 @include( 'modal-dialog')を介してcreate.blade.phpで使用するか、ajaxリクエストで返すことができます。 – Kristo

+0

ええ、create.blade.phpは既にマスタービューを拡張しています。それは完全なHTMLページをレンダリングします。それらの条件をビューに移動する必要がありますか? –

+0

大胆ではありません。マスターを拡張していないcreate.blade.phpを余分に作ってみませんか?後で、複数のビューにわたって再利用できるように、パーツで分割できるパーツを確認できます。 – Kristo

答えて

0

私はcreate.blade.phpビューで少し条件付きで終了しました。

@extends(((Request::ajax()) ? 'layouts.modal' : 'layouts.master')) 

@Kristoによると、私はoverengineer習慣、そしてこの単純な&読める解決策に固執します。

UPDATE

私はAjaxを介して、私のモーダルをロードし単にコンパイル時にそれらを注入しないことに決めたように私は、少し拡張を作成しました。ここでは、コード:)

https://github.com/3amprogrammer/modal-blade-extension

関連する問題