2017-12-01 7 views
0

プロジェクトの要件に最も適した方法を見つけることに問題があります。Laravel - 特定のページのCMS

システムに現在存在するroutes/resourcesの束があります。私はいくつかのページのCMSを開発していますが、現在のページはすべてresourcesのままで、以前と同じ機能をすべて備えていなければなりません。

1. User enters `/users` 
2. Checks to see if `/users` is inside the `Pages` table 
    -> No - (Return the Route::resource('/users)) 
    -> Yes - Returned `Dynamic.blade.php` with the content from the table. 

のIが要求されたページが内にない場合、私は、ビュー自体を返す可能性があるためRoute::resourceを返すことができないされたよ。ここで

は私が達成したいの手順ですテーブルが存在しない場合は、特定のエンドポイントに対してResourceを返すことが可能かどうかはわかりません。あなたはこのような何かを行うことができ、インデックス機能では、あなたのRoute::resource('users', 'ControllerName')に関連付けられているあなたのコントローラ内部

答えて

0

public function index(){ 
    // Obviously write your own condition logic here 
    if('/users' in Pages table){ 
     // Returned `Dynamic.blade.php` with the content from the table. 
    } 
    else{ 
     // Do the other stuff you need to accomplish. 
    } 
} 

これはあなたが求めていたものでなかった場合は、ので、私はよりよく助けることができるコメントしてください。

+0

返信いただきありがとうございます。私はこれがどのように機能するのか見てから、ルートのレベルでそれを行うことをもっと考えていましたが、コードの重複が多いでしょうか?つまり、各コントローラーについて、本質的にこれを複製する必要があります。 'index'メソッドが入力されたことを聞く方法はありませんか? – Phorce

+0

ルートレベルで、 'Route :: resource()' Route :: get( 'users'、function(){}) 'の下で' resource'メソッド呼び出しをオーバーライドすることができます。もし私が正しいのですが、あなたは特に呼び出される 'UsersController @ index'メソッド(または名前を付けたもの)を聞きたいと思っていますか?私はこれを今見ているが、私は自分の経験でこのような必要性に遭遇していない。個々のリソースコントローラの@indexを複製しますか?もしそうなら、コードの重複を防ぐために、特性や他のクラスを実装することができます。 –

+0

私はちょっと見たことがあります。ルートレベルで聞く必要がある場合は、ルートが解決されたときにイベントリスナーを作成するのが最善の方法かもしれません。同様のコード例(layer7):https://laracasts.com/discuss/channels/tips/how-tocount-every-time-a-route-is-called –

関連する問題