Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Yii 简单易用表格_Yii - Fatal编程技术网

Yii 简单易用表格

Yii 简单易用表格,yii,Yii,在阅读了YiFramework和Ullman之后,关于表单的一些事情我仍然很不清楚。我试过很多东西,但总的来说,我认为我肯定错过了一些基本的东西 作为一个应用程序,假设我正在创建一个用户可以发布到的墙。我可以在控制器中使用以下方法显示特定用户的所有帖子: public function actionShow($id) { $userModel = new User; $user = $userModel->findByPk($id); $postMode

在阅读了YiFramework和Ullman之后,关于表单的一些事情我仍然很不清楚。我试过很多东西,但总的来说,我认为我肯定错过了一些基本的东西

作为一个应用程序,假设我正在创建一个用户可以发布到的墙。我可以在控制器中使用以下方法显示特定用户的所有帖子:

public function actionShow($id)
{
    $userModel = new User;
    $user      = $userModel->findByPk($id);

    $postModel = new UserPost;
    $criteria = new CDbCriteria();
    $criteria->condition = 'user_id='.$id;

    $myPosts = $postModel->findAll($criteria);

    $this->render('show',array(
                  'user'    => $user,
                  'myPosts' => $myPosts,
                  'post'    => $postModel,
                  ));
}
视图(show.php)中的以下(缩写)代码呈现输出:

echo '<h2>' . $user->first_name . '</h2>';

foreach ($myPosts as $myPost){
    echo $myPost->post;
    echo '<br/>';
}
然后,我使用以下方法创建了一个参考(在上述actionShow中):

将其传递到我的视图(show.php)中,并在顶部使用以下内容呈现:

$form->render();

此时,它只呈现postForm.php文件的内容

这些问题

  • 使用CForm正确吗(或者应该使用CActiveForm)

  • 为什么它不呈现表单

  • 在这种情况下,我应该直接使用CHtml吗


  • 谢谢

    这个例子非常接近实际效果。在看了更多的例子之后,我拼凑了细节,并开始在Yii上取得进展

    1。使用CForm(或者我应该使用CActiveForm)正确吗?
    在这种情况下,CForm是正确的。要问的问题是“post”背后的模型是否是ActiveRecord(即它是扩展了CActiveModel还是仅仅扩展了CModel)?CForm/CActiveForm的使用应遵循所使用的模型。代码可以使用任何一种类型的模型编写,这取决于开发人员如何处理信息

    如果要填充填充数据库表项的表单,则使用活动模型是有意义的。如果表单只是提供一条信息来执行操作(例如搜索),则甚至可能没有模型

    我发现这是一个非常有用的例子

    2。为什么不呈现表单?
    上面的代码基于上的示例。要实现此功能,form builder文件的第一行需要以下代码:

    <?php
    
    这是不可重用的,但在本例中,它是一个非常简单的表单。无论如何,我可能会使用表单生成器重新编码

    $form->render();
    
    echo $form;
    
    <?php
    
    echo CHtml::beginForm();
    echo CHtml::textField('Text', 'some value');
    echo CHtml::submitButton('Post');
    echo CHtml::endForm();