2016-07-30 1 views
0

コントローラーのベーキングコード(vendor/cakephp/bake/src/Template/Bake/Template/Bake/Controller/controller)を調整したいと思います。 ctp)ので、コントローラーを焼くときにモデルにインストールされているかどうかを自動的に検出し、 "use Cake \ I18n \ I18n;"を追加します。それをベーキングしながらコントローラに送ります。CakePHP 3 - コントローラーをベイクする際にモデル内にインストールされている動作を特定する方法

コントローラベーキングコード内にインストールされている動作を特定する方法を教えてもらえますか?

+0

これは、コントローラをベイク処理するときに既に存在するテーブルクラスでのみ機能することに注意してください。また、アプリケーションのテンプレート構造にカスタムベークテンプレートを作成する必要があることもご存じですか?あなたがベンダーファイルを修正しようとしているかのように読み込まれます。 – ndm

+0

はい、私はsrc/Template/Bakeにカスタムベークテンプレートを作成する必要があることを知っています。それは私がすでにやっていることです。 – Lucky

+0

翻訳されたフィールドを持つ新しいテーブルを作成すると、翻訳されたフィールドが 'i18n_fieldName'として追加されます。 Model and Entityベーキングファイルでは、 'i18n_'のフィールドをチェックし、コードを自動的に適応させて翻訳動作を追加します。私はまた、コントローラベイキングファイルでそれをしたい:私は "use Cake \ I18n \ I18n;"を追加する必要がありますコントローラに 'i18n_'のフィールドがあるとき、またはモデルにTranslateビヘイビアがあるとき...モデルをベーキングするとき、 'i18n _...'フィールドの$ validation配列をチェックできますが、明らかに$ validation配列はコントローラベイキングファイルでは使用できません。 – Lucky

答えて

0

コントローラをベイク処理するときにテーブルクラスが既に存在する場合、ビューに渡される必要な情報を$modelObjから取得できる必要があります。コントローラに関連付けられているテーブルクラスのインスタンスです。

Table::behaviors()で利用できるビヘイビアレジストリには、必要な情報が必要です。

$modelObj->behaviors()->has('Translate') 

そしてもちろん、あなたがなどのスキーマ(Table::schema())、検証ルール(Table::validator())、のように、テーブルから更なる情報を得ることができる...

+0

ありがとう! if($ modelObj-> behaviors() - > has( 'Translate')){トリックを行います! – Lucky

関連する問題