web-dev-qa-db-ja.com

Yii2の他の場所でのビューのレンダリング-renderPartialはありませんか?

Yii2のカスタムコンポーネントファイル内に部分ビューをレンダリングする必要があり、 Yii docs に従って、次のような方法でビューインスタンスにアクセスできます。

\Yii::$app->view->renderFile('@app/views/site/license.php');

私は先に行き、試しました:

Yii::$app->view->renderPartial('//my/view/');

...しかし、存在しないメソッドにアクセスしようとしてエラーが発生しました。

次に view class をチェックアウトし、renderPartialがないことに気付きました。これは代わりに controller クラスのメソッドです。

renderFileメソッドとrenderメソッドがあります。これらのうちどれを使用すべきですか?

ドキュメントには、renderメソッドにcontrollerクラスの同じ名前のメソッドのようなレイアウトが含まれていると記載されていないため、わからないrenderFileについて

誰かがrenderPartialが生成する結果と同じ結果を生成する方法を説明できますか?

12
Brett

Yii::$app->controller->renderPartial('myview');からrenderPartialを呼び出すこともできます。 yii\base\ControllerのソースコードrenderPartialは、ビューのrenderメソッドを使用して、Yii::$app->view->renderrenderは内部でrenderFileを呼び出すため、基本的にrenderrenderFileの間に違いはありません。ただし、renderを使用すると、$viewは、path aliasabsolute path with the applicationなどのいくつかの形式でwhithin moduleおよびrelative pathrenderFileには、絶対ファイルパスまたはパスエイリアスのみを渡すことができます。

27
Tony