通過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嗎?
謝謝!