5

私は CodeIgniter の初心者であり、MVC イデオロギーを最もきれいに使用する方法を完全に把握するのにまだ苦労しています。

私は、エントリに投票したり、人々をフォローしたりする機能を備えた基本的な CMS システムを作成しています。

  • 投票パネル
  • フォロー/フォロー解除パネル
  • ログイン/ログアウトパネル
  • ユーザーがログインしているかどうかを確認するコードなど...

統一できるように、このコードをどこに置くべきか疑問に思っていますか? ヘルパーが行く方法だと思いますか?コントローラーでヘルパーを宣言すると、対応するビューから呼び出すことができますよね?

一部の要素は動的です (フォロー/フォロー解除ボタンなど)。既にユーザーをフォローしているかどうかを確認し、適切なボタンを表示する必要があります。これには、モデルを確認する必要があります。私が今持っているのは、すべてのロジックがコントローラーにあり、適切なボタンを返すということですが、コントローラーのリターンでも形成されたhtmlコードを返すのは奇妙に思えます。もっと似ているはずです:

  • コントローラーは、あなたが誰かをフォローしているかどうかをチェックします
  • コントローラーはブール値をビューに渡します
  • ビューはこの値でヘルパーを呼び出し、適切なボタンを描画します

また、二次的な質問として、ビューから返された mysql の結果を処理するために、foreach ループで mysql 配列をかなりループしてきました。私のビューはやや複雑になっているようですが、別のヘルパーでも行う必要があるかもしれませんが、別の方法は考えられませんか?

これがナイーブまたは繰り返しの質問である場合はお詫びします。この件に関しては確かに多くの議論がありますが、別のプロジェクトに簡単に関連付けられるとは限りません。

4

3 に答える 3

0

あなたが言及した投票機能を備えたhttp://newspapair.comを開発するとき、私はヘルパーとカスタムクラスを使用して機能を複数のビューに広げました。

ヘルパー-クラスのない関数があります。したがって、スタンドアロン関数または関数のグループをファイルに配置して、ヘルパーとして保存できます。

たとえば、静的クラスの代わりに、NewsPapairの汎用フォーム処理関数を備えたヘルパーを使用しました。しかし、これは「ベストプラクティス」ではありません。以前のプロジェクトの機能をすでに持っていたので、このようにしました。

MySQLの結果をループする限り、DBサーバーが手間のかかる作業を実行できるようにするクエリを作成してみてください。これにより、コードがより効率的になります。おそらく、サンプルコードを使用して特定のクエリについて質問します。さらに、モデルですべてのデータ収集を行います。

于 2011-03-21T19:35:36.763 に答える
0

ユーザー ログインの処理に関する限り、静的クラスとシングルトン デザイン パターンを使用することをお勧めします。これにより、特定のユーザーがログインしているか、アプリケーションのどこにもログインしていないかどうかを確認できます。ここに良いチュートリアルがあります http://www.phpandstuff.com/articles/codeigniter-doctrine-scratch-day-4-user-login

ヘルパーをロードしています。コントローラーにロードすると、ビューに自動的にロードされるとは思いません。ビューファイルにヘルパーを再ロードするか、ヘルパーを自動ロードする必要があると思います。(頭のてっぺんを思い出せませんが、かなり確信しています)。

mysql の結果のループに関しては、常にモデルを使用する必要があります。アプリケーションから情報を取得またはソートする関数は、モデル内で実行する必要があります。次に、ビュー ファイルで結果をループし、選択した方法でデータをフォーマットします。

于 2011-03-21T18:58:43.540 に答える