【问题标题】:How should I display the content of the database in CActiveForm?我应该如何在 CActiveForm 中显示数据库的内容?
【发布时间】:2012-05-20 05:22:42
【问题描述】:

现在我正在构建网站的视图,并使用小部件 CActiveForm 作为视图。但是,我需要显示数据库的一些内容,例如,SQL 查询的结果。那我应该怎么做才能完成目标呢?谢谢!

下面提供了我的一些代码:

<div class="form">
<?php

$form=$this->beginWidget('CActiveForm', array(
    'id'=>'login-form',
    'enableClientValidation'=>true,
    'clientOptions'=>array(
        'validateOnSubmit'=>true,
    ),
));

?>

    <p class="note">Fields with <span class="required">*</span> are required.</p>


    <div class="row buttons">
        <?php echo CHtml::submitButton('Login'); ?>
    </div>

    <div class="row radiobuttons">
        <?php echo CHtml::radioButtonList(
            $Paper,
            'Q1No',
            array('A'=>'A','B'=>'B','C'=>'C','D'=>'D'),
            array('template'=>'<span class="radio">{input}{label}</span>','separator'=>'')); 
        ?>
    </div>

<?php $this->endWidget(); ?>
</div><!-- form -->

这是我的代码。我需要在表单中添加一些数据库的内容。内容如下:

    public function actionTaketest()
    {
        // Get the ID of the test paper from the URL ---ztm
        if(isset($_GET['paperid']))
        {
            $paperid=(int)$_GET['paperid'];
            $dsn = 'mysql:host=localhost;dbname=mydatabase';
            $username = 'root';
            $password = '000000';

            $connection=new CDbConnection($dsn,$username,$password);

            // establish connection. You may try...catch possible exceptions
            $connection->active=true;

            $rawData = Yii::app()->db->createCommand()
                ->select('*')
                ->from('Paper, Question') array(':PaperNo'=>$paperid))
                ->queryAll();

            $dataProvider=new CArrayDataProvider($rawData, array(
                'id'=>'PaperNo',
            ));


            $connection->active=false; // close connection


            $model=new LoginForm;
            $this->render('form',array('model'=>$model, 'dataProvider'=>$dataProvider));

        }
        else
        {
            // Deny illegal access to the page ---ztm
            throw new CHttpException(404,'invalid request');
        }
    }

此代码在控制器中。

【问题讨论】:

  • CActiveForm 是 html 表单的小部件。为什么要使用它来查看?你的问题不清楚,请提供一些代码sn-p。
  • 在自动生成的 login.php 中,小部件用于视图,这就是我想在视图中使用它的原因。我写了一个 php 文件,如下所示: 非常抱歉,我现在未能在此处粘贴代码。在提供代码之前,我会先去看帮助。
  • 您想显示数据库中的哪些内容?它与表格中收集的数据有什么关系?你的问题还不清楚
  • 感谢bool.dev,我这样粘贴代码成功了。但是当我试图删除代码中的错误时,我未能使代码足够清晰。所以我只是在这里粘贴用于登录的自动生成的代码。够了吗?或者我应该尝试在这里粘贴我自己的源代码?如果有必要,我会去对代码做一些修改,以便于理解。
  • 只需粘贴您的代码,让我们看看它是如何...表格中收集的数据?”

标签: yii


【解决方案1】:

您的代码太乱了,在某些地方看起来无效。首先,您不需要在控制器中创建 CDbConnection,您可以在 config.xml 中指定凭据。要从数据库中读取数据,您可以使用ActiveRecord:

$paper = Paper::model()->findByAttributes(array('PaperNo' => $paperid));

然后在你的 html 中:

echo CHtml::activeRadioButtonList(
        $paper,
        'Q1No',
        array('A'=>'A','B'=>'B','C'=>'C','D'=>'D'),
        array('template'=>'<span class="radio">{input}{label}</span>','separator'=>'')
);

希望对你有所帮助。

【讨论】:

  • 非常感谢,我会尝试使用 ActiveRecord 看看它是否有效。很抱歉没有使代码易于理解。正如我所说,在尝试修复代码时,我对代码进行了一些修改,但我还没有完成调试,可能程序有一些错误。
  • 但是我还是不知道要展示出来怎么办?
  • 你的意思是“把东西展示出来”。如果您需要打印模型的某些列,只需echo $paper-&gt;PaperNoecho $paper-&gt;Q1No
  • 我忘记用了。好吧,我会试一试。谢谢。
猜你喜欢
  • 1970-01-01
  • 2019-04-24
  • 1970-01-01
  • 2012-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-05
  • 1970-01-01
相关资源
最近更新 更多