我的Model
会将此信息返回给我的Controller
:
namespace app\models;
use yii\data\ActiveDataProvider;
use \yii\db\ActiveRecord;
class Questions extends ActiveRecord{
public static function getQuestionById($id){
return Questions::find()->select('title, is_textarea')->where(['id'=>$id])->one();
}
public static function model($className=__CLASS__)
{
return parent::instance();
}
}
在Controller
中,它已发送到View
:
return $this->render('question', ['question' => Question::getQuestionById($id)]);
然后在我的View
中,我必须显示如下问题:
<?= $question['attributes']['title'] ?>
没有办法以更加人性化的方式展示,例如:
<?= $question->title ?>
我尝试了它并且它正在抛出“试图获取非对象的属性”异常。我认为这是Yii的方式,就像Django,CodeIgniter等,但我在文档中找不到如何在视图中显示模型数据的例子
答案 0 :(得分:0)
发送到视图时,您正在使用
分配-- #family example data
ID, Email, ChildId
133587,example1@example.com,133588
133587,example1@example.com,133589
133598,example2@example.com,133599
133598,example2@example.com,133600
133604,example3@example.com,133605
133604,example3@example.com,133606
133608,example4@example.com,133609
133608,example4@example.com,133610
133623,example5@example.com,133624
133623,example5@example.com,133625
133623,example5@example.com,134811
-- Children example data
ID, Email
133588,example1@example.com
133589,
133599,
133600,example2@example.com
133605,
133606,
133609,example4@example.com
133610,example4@example.com
133624,
133625,
134811,
['questions'=>$question]
应该有效
答案 1 :(得分:0)
我认为您应该澄清实现目标所需的步骤:
因此,您可以在控制器的操作中执行此操作:
public function actionTest($id)
{
$question = Questions::findOne(['id' => $id]);
return $this->render('test', [
'question' => $question,
]);
}
显示数据。现在,您可以在视图文件中访问所需的模型字段:
<?= $question->title ?>
答案 2 :(得分:0)
避免&#34;试图获得非对象的属性&#34;例外,您应该检查$ question是否存在
<强>控制器强>
public function actionTest($id)
{
$question = Question::getQuestionById($id);
if (empty($question)) {
throw new \yii\web\NotFoundHttpException('Question not found');
}
return $this->render('test', [
'question' => $question,
]);
}
查看强>
<?php
use yii\helpers\Html;
use yii\web\View;
use app\models\Question;
/**
* @var $this View
* @var $question Question
*/
?>
<div>
<h1><?= Html::encode($question->title) ?></h1>
<p>
<?= Html::encode($question->is_textarea) ?>
</p>
</div>