[英]NOT able to store data in database in yii
我是YII的學習者。 我不能將值存儲在datatbase中,請幫助我。 我必須將值存儲在product表中。 獲取值但它不存儲在DB中。 提前謝謝控制器:
<?php
class ProductController extends Controller
{
public function actionCreate()
{
$model=new CreateForm;
// collect user input data
if(isset($_POST['CreateForm']))
{
$model->attributes=$_POST['CreateForm'];
if($model->validate())
{
echo "HI";
}
}
// display the login form
$this->render('create',array('model'=>$model));
}
}
?>
模型:
<?php
class CreateForm extends CFormModel
{
public $product_name;
public $category_name;
public $description;
public static function model($className=__CLASS__)
{
return parent::model($className);
}
public function tableName()
{
return 'products';
}
public function rules()
{
return array(
array('product_name, category_name, description', 'required'),
array('product_name', 'unique', 'className' => 'Product', 'attributeName' => 'product_name', 'message'=>'This product name is already in use'),
array('product_name,category_name,desc', 'safe'),
);
}
public function attributeLabels()
{
return array(
'product_name'=>'PRODUCT NAME',
'category_name'=>'CATEGORY',
'description'=>'DESCRIPTION'
);
}
}
?>
視圖:
<?php
$this->pageTitle=Yii::app()->name . ' - Create';
$this->breadcrumbs=array(
'Create',
);
?>
<h1>CREATE</h1>
<div class="form">
<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'create-form',
'enableAjaxValidation'=>true,
'enableClientValidation'=>true,
));
?>
<p class="note">Fields with <span class="required">*</span> are required.</p>
<div class="row">
<?php echo $form->labelEx($model,'product_name'); ?>
<?php echo $form->textField($model,'product_name'); ?>
<?php echo $form->error($model,'product_name'); ?>
</div>
<div class="row">
<?php
echo $form->labelEx($model,'category_name');
$records = Category::model()->findAll();
$list = CHtml::listData($records, 'category_id', 'category_name');
echo $form->dropDownList($model,'category_name',$list,array ('prompt'=>'select '));
echo $form->error($model,'category_name');
?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'description'); ?></br>
<?php echo $form->textArea($model,'description',array('style' => 'height:100px;width:500px;','maxlength'=>500)); ?>
<?php echo $form->error($model,'description'); ?>
</div>
<div class="row submit">
<?php echo CHtml::submitButton('CREATE'); ?>
</div>
<?php $this->endWidget(); ?>
</div><!-- form -->
if($model->validate())
{
if(!$model->save()) // save it here!
{
// do stuff after successful save
}
}
更新:
CFormModel
沒有方法save()
您需要從CActiveRecord
擴展您的模型
function saveInDb()
{
$command = Yii::app()->db->createCommand(); // create a sql command and do insert here
.
.
.
}
為什么不
if($model->validate())
{
$model->save();
}
?
好吧,首先,如果這應該是一個基於表數據的表單,您需要擴展不是來自CFormModel而是來自CActiveRecord。 第二:為了更好的可讀性和可移植性,重寫tableName方法
public function tableName()
{
return '{{products}}';
}
試試這個,保存功能自動調用驗證表單。
if($model->save()){
echo 'add record success'.
}
else {
echo 'failed'.
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.