通过YiiFramework和Ullman阅读后,有几种关于形式的事情我仍然很不清楚。我尝试了很多东西,但一般认为我必须错过一些根本性的东西。简单的Yii形式
作为一个应用程序,说我正在创建一个用户可以发布到的墙。我可以在我的控制器下面的方法显示所有帖子的特定用户:
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/>';
}
我尝试使用表单生成器创建的一种形式:
return array(
'title'=>'Write Something',
'elements'=>array(
'post'=>array(
'type'=>'text',
'maxlength'=>255,
)
),
'buttons'=>array(
'post'=>array(
'type'=>'submit',
'label'=>'Post',
),
),
);
我然后创建使用参考(在上述actionShow):
...
$myPosts = $postModel->findAll($criteria);
$postForm = new CForm('application.views.site.postForm', $postModel);
$this->render('show',array(
...
传进我的观点(show.php),并在顶部呈现:
$form->render();
或
echo $form;
在这一点上,它只是呈现postForm的内容.php文件。
的问题...
是否正确使用的CForm(或我应该使用CActiveForm)?
为什么不是渲染窗体?
我应该在这种情况下直接使用CHtml吗?
谢谢!