0

サーバーにCakePHP1.3マルチサイトインストールがあります。各サイトには独自のフォルダーがあり、それらはすべて1つの同じ場所からCakePHPコアライブラリをロードします。これはどのように見えるかです:

  • [ケーキ](ケーキのコアライブラリ)
  • 【サイト】
    • 【サイト1】
      • [アプリ]
      • [プラグイン]
      • [ベンダー]
      • .htaccess
      • index.php
    • [サイト2] (独自のアプリ、プラグイン、ベンダーフォルダーもあります)
    • [サイト3] (独自のアプリ、プラグイン、ベンダーフォルダーもあります)

すべてのアプリで使用したい機能を実装したいという状況に何度も遭遇しますが、これまでのところ、各サイト内でコードを複製するだけです。これらの関数を1か所で宣言し、どのサイトからでも呼び出せるようにしたいと思います。ベンダーはこれと関係があると思いますが、私はクックブックを調べていて、私の場合はそれをどのように使用するかがわかりません。

どんな助けでも大歓迎です!

UPATE

したがって、ベンダーを見ると、これらのベンダーのファイル内の関数が他のCakePHPクラス(たとえば、Session、Auth、等)。私がやろうとしていることの1つの例を挙げましょう。それは、私がやろうとしていることをよりよく理解するのに役立つかもしれません。

各サイトには独自のログインシステムがあります(cakeのAuthを使用)。私がやりたいことの1つは、ユーザーがログインしたときに(UsersControllerのlogin()関数が呼び出されたとき)、ユーザーのユーザー名で何らかの処理を行い、Session->flashを呼び出す関数を用意することです。 ()そこにメッセージを挿入する関数(関数が行う処理に応じてメッセージが変わります)。したがって、この関数はユーザーモデルとセッションモデルを使用する必要があります。

ベンダーを使用してこれを行うことはできますか?ベンダーでこの1つの関数(つまり、 processLogin())を宣言すると、すべてのサイトでその関数を使用できますか?もしそうなら、どのように?そうでない場合、これを行う他の方法はありますか?

4

1 に答える 1

0

それらを同じレベルのケーキサイトのベンダーフォルダに貼り付け、選択した名前(通常は代理店名またはその他の一意の識別子)の下に名前を入れます。

CakePHP 1.3でベンダーファイルをロードする例は、クックブックで説明されています:http: //book.cakephp.org/1.3/en/view/943/Loading-Vendor-Files

ただし、CakePHP 2にアップグレードし、コードをlibの下のサブフォルダーに配置することをお勧めします。

于 2012-11-15T20:40:07.230 に答える