Yii2访问视图中的另一个控制器/视图
我想做的是这样的:Yii2访问视图中的另一个控制器/视图,yii2,Yii2,我想做的是这样的: $this->render('//article/overview'); ?> <?php use yii\helpers\Html; use yii\widgets\DetailView; /* @var $this yii\web\View */ /* @var $model app\models\Article */ $this->title = $model->subject; $this->params['breadcrum
$this->render('//article/overview'); ?>
<?php
use yii\helpers\Html;
use yii\widgets\DetailView;
/* @var $this yii\web\View */
/* @var $model app\models\Article */
$this->title = $model->subject;
$this->params['breadcrumbs'][] = ['label' => Yii::t('app', 'Articles'), 'url' => ['index']];
$this->params['breadcrumbs'][] = $this->title;
\yii\web\YiiAsset::register($this);
?>
<div class="article-view">
<h1><?= Html::encode($this->title) ?></h1>
<div style="margin-top:20px;"><?php echo $model->contents; ?></div>
概述
的内容如下:
$this->render('//article/overview'); ?>
<?php
use yii\helpers\Html;
use yii\widgets\DetailView;
/* @var $this yii\web\View */
/* @var $model app\models\Article */
$this->title = $model->subject;
$this->params['breadcrumbs'][] = ['label' => Yii::t('app', 'Articles'), 'url' => ['index']];
$this->params['breadcrumbs'][] = $this->title;
\yii\web\YiiAsset::register($this);
?>
<div class="article-view">
<h1><?= Html::encode($this->title) ?></h1>
<div style="margin-top:20px;"><?php echo $model->contents; ?></div>
以不同的方式解决。
如果可以用一种更简单的方式来做,我将表示欢迎。
我想在我的yii2应用程序主页上显示一个来自控制器的视图
所谓的观点
然后我从site/index.php
中删除了上述代码,并更新了相关的控制器,即controllers/SiteController.php
public function actionIndex()
{
$model = Article::find()->where(['id' => 1])->one();
return $this->render('//article/overview', [
'model' => $this->findModel(1),
]);
}
还添加了顶部的线条,如:
use app\models\Article;
use app\models\ArticleSearch;
并在控制器底部添加了另一个操作:
protected function findModel($id)
{
if (($model = Article::findOne($id)) !== null) {
return $model;
}
throw new NotFoundHttpException(Yii::t('app', 'The requested page does not exist.'));
}
但我认为应该以一种更简单的方式来完成,仅仅调用已经存在的视图似乎有些过分。可能类似于:Yii:::$app->runAction('article/overview',['id'=>1])?请提供更多细节。不清楚你想做什么。提供更多代码:从哪个视图访问其他视图?你有什么控制器,你不想调用什么动作。您可以在视图中使用$this->render('view/path')来呈现另一个视图。Hi@AntonRybalko-正如您所说,如果我在另一个视图中尝试使用与
$this->render('view/path')
相同的代码,即$this->render('//article/overview'))
但是我得到的错误是,$model
没有定义。请告诉我,您想查看更多代码的哪一部分。我已经给出了控制器和视图。您需要将model
传递到视图$this->render('//article/overview',model'=>$model)
之前,将model
变量传递到第一个视图