2016-10-07 9 views
0

私は自分のCakePHP 3コンポーネントを作成しました。私はコントローラーに$this->loadComponent()を使ってそれを含めています。しかし、私はまた、それをloadComponent()メソッドを持たないCellに含める必要があります。CakePHP 3セル内のコンポーネント

どのようにコンポーネントをセルに含めることができますか?

答えて

2

あなたはそこでコンポーネントを使用しません。セルはセルであり、コントローラではないためです。セルはコントローラーについても知らないので、ソースを確認してください。 http://api.cakephp.org/3.3/source-class-Cake.View.Cell.html

セル内のコンポーネントを使用する必要がある/したい場合は、アーキテクチャが間違っていると思います。あなたがコードを共有するのを忘れてしまったので、これ以上アドバイスすることはできません。あなたが何をしようとしても、アプリケーションアーキテクチャをリファクタリングしてください。

+0

私にはショッピングカートが付いています。私も製品カタログコントローラを持っています。これらの両方の場所では、ユーザーがログインして価格グループの1つを選択したり、割引などを管理しているかどうかを確認するなど、製品価格の計算を行う必要があります。どのような代替アプローチを提案しますか?この計算を製品モデルに移行する必要がありますか? – Rytis

+1

よく、@ burnzum、マニュアルは、細胞がミニコントローラだと言う。したがって、コンポーネントを持つことが有用な場合があります。 – arilia

+0

@arilla私は同意しない、私は本が更新されるべきだと思う、これは誤解を招く。それは比喩的だが、技術的に正しいIMOではない。彼らが明らかにコントローラへのアクセス権を持っていないコードを確認してください。セル内のコンポーネントを使用すると、MVC違反のIMOが発生し、アーキテクチャーがあまりうまくいきません。モデルのレイヤークラスやメソッドでは、データ操作の可能性が高いので、彼がやっていることは何でも良いと思う。私はあなたが何か間違っているそれらの中でデータ操作を行う場合、主にrequestAction()の代わりにセルを参照してください。 – burzum