を呼び出すと、$ this-> modelはmodel'snameを返しますが、動作しません。このビューコンテキストが現在のモデルの名前を取得する方法を教えてください。 APIの
http://api13.cakephp.org/class/view
API CakePHPの偽のですか? $ view-> modelIdでも仕事はありません。
を呼び出すと、$ this-> modelはmodel'snameを返しますが、動作しません。このビューコンテキストが現在のモデルの名前を取得する方法を教えてください。 APIの
http://api13.cakephp.org/class/view
API CakePHPの偽のですか? $ view-> modelIdでも仕事はありません。
できません。これは、ビューの親が(これもアクセスできない)コントローラであり、コントローラが複数のモデルを持つ可能性があるためです。
ビューでモデルの名前にアクセスしようとしている場合は、何か間違っている可能性が高いか、MVCデザインパターンをまだ理解していない可能性が非常に高いです。
モデルの名前がビューに関連する1つのケースは考えられません。私はあなたが何か間違っていると主張する。
はい、あなたのモデルにその名前を伝える必要があります。あなたのモデルに次のような関数を記述してください:
function myname(){
return $this->name;
}
あなたのコントローラはあなたのモデルの名前を尋ねることができます。
が、これはモデル名にして、あなたのコントローラ名を変更する必要があり、この
Inflector::classify($this->params['controller']);
を試してみてください。もちろん、ビューレベルからでもそれを行うことができます。コントローラで
thsiが動作しない可能性がありますhttp://www.blog.zahidur.com/how-to-get-model-name-in-cakephp/コメントを読む – aWebDeveloper
なぜ「私は「特異」の代わりに「分類」を使用しますか?そして、この解決策はうまく動作します。 Inflectorのドキュメントを確認してください。http://book.cakephp.org/view/1479/Class-methods – 23kulpamens
:ご希望の結果をachiveする
$view =& ClassRegistry::getObject('view');
$models = $view->params['models'];
これは部分的には真です。モデルがプラグインの一部であれば、プラグインを含む名前を返します(例えば、 'Pluginモデル)。 –
はこれを試してみてください
<?php $model = Inflector::camelize(Inflector::singularize($this->params['controller'])); ?>
使用Inflectors:ます$ this-> modelClass
あなたはCakePHPの規約に従っている場合と、ルールでは、モデル名はコントローラ名と同じですが、コントローラ名は複数でなければならないので、Viewでコントローラ名を取得するには、次のように単純に追加します。
<?php
$controller = $this->name
とビューのモデル名は次のようになります。
$model = trim($controller , "s");
これは私がモデルの一つのケースを考えることはできません」
名前を分割する必要があるかもしれません。この例を見てください: 'Territory'>' Territories'、あなたのコードでは動作しません。 –
@ToniAlmeidaが正しく、代わりに 'Inflector :: singularize($ controller)'を使います。あなたのコントローラーが「s」で始まっているならば、これは奇妙な結果をもたらすかもしれません。 –
ビューにモデル名を取得する唯一の方法であります名前はビューに関連しています " - cakePHPの仕組みを調べる – jason
ビジュアルメニューで選択したセクションを強調表示する必要がある場合は、便利なツールです。それとも私は何かが欠けている? – vitto
要素を動的にフォームを作成する必要はありますか? – user6972