PDA

View Full Version : کامنت در مجموعه آموزشی



>@>mehr
شنبه 10 خرداد 1393, 00:14 صبح
سلام, آقای شهرکی من طبق آموزش شما در مجموعه آموزشی کامنت رو ساختم, درست کار میکنه فقط نام نویسنده کامنت ذکر نمیشود. لطفآ اگر میشه بگین ایراد کجاست



public function actionCreate() { $model=new Comment;
// Uncomment the following line if AJAX validation is needed // $this->performAjaxValidation($model);
if(isset($_POST['Comment'])) { $model->attributes=$_POST['Comment']; if($model->save()) $this->redirect(array('view','id'=>$model->id)); }
$this->render('create',array( 'model'=>$model, )); }


_comments


<?php foreach ($comments as $comment):?> <div class="comment"> <div class="author"> <?php echo CHtml::encode($comment->author->username); ?>: </div> <div class="time"> on <?php echo date('F J, Y\a\t h:i a', strtotime($comment->create_time)); ?> </div> <div class="comment"> <?php echo nl2br(CHtml::encode($comment->content)); ?> </div>
<hr/> </div> <!-- comment --><?php endforeach; ?>




view.php


<div id="comments"> <?php if ($model->commentCount >= 1): ?> <h3> <?php echo $model->commentCount > 1 ? $model->commentCount . 'Comments' : 'One Comment' ; ?> </h3> <?php $this->renderPartial('_comments', array('comments' => $model->comments)) ; ?> <?php endif ; ?> <h3> Leave a Comment </h3>
<?php if (Yii::app()->user->hasFlash('commentSubmitted')): ?> <div class="flash-success"> <?php echo Yii::app()->user->getFlash('commentSubmitted'); ?> </div> <?php else: ?> <?php $this->renderPartial('/comment/_form', array('model'=> $comment)); ?> <?php endif ; ?></div>

همونطور که گفتم کامنت ثبت میشه ولی پیغام فلش هم نمایش داده نمیشه

>@>mehr
شنبه 10 خرداد 1393, 14:00 عصر
/** * Displays a particular model. * @param integer $id the ID of the model to be displayed */ public function actionView($id) { $post=$this->loadModel($id, true); $comment=$this->createComment($post); $this->render('view',array( 'model' => $post, 'comment' => $comment, )); }

MMSHFE
شنبه 10 خرداد 1393, 14:10 عصر
کد مدل کامنت رو هم بگذارین. بخصوص متد relations

>@>mehr
شنبه 10 خرداد 1393, 14:24 عصر
<?php
/** * This is the model class for table "comment". * * The followings are the available columns in table 'comment': * @property integer $id_comment * @property string $content * @property integer $post_id * @property string $create_time * @property integer $create_user_id * * The followings are the available model relations: * @property Post $post * @property User $createUser */class Comment extends CActiveRecord{ /** * @return string the associated database table name */ public function tableName() { return 'comment'; }
/** * @return array validation rules for model attributes. */ public function rules() { // NOTE: you should only define rules for those attributes that // will receive user inputs. return array( array('content, post_id', 'required'), array('post_id, create_user_id', 'numerical', 'integerOnly'=>true), array('create_time', 'safe'), // The following rule is used by search(). // @todo Please remove those attributes that should not be searched. array('id_comment, content, post_id, create_time, create_user_id', 'safe', 'on'=>'search'), ); }
/** * @return array relational rules. */ public function relations() { // NOTE: you may need to adjust the relation name and the related // class name for the relations automatically generated below. return array( 'post' => array(self::BELONGS_TO, 'Post', 'post_id'), 'author' => array(self::BELONGS_TO, 'User', 'create_user_id'), ); }
/** * @return array customized attribute labels (name=>label) */ public function attributeLabels() { return array( 'id_comment' => 'Id Comment', 'content' => 'Content', 'post_id' => 'Post', 'create_time' => 'Create Time', 'create_user_id' => 'Create User', ); }
/** * Retrieves a list of models based on the current search/filter conditions. * * Typical usecase: * - Initialize the model fields with values from filter form. * - Execute this method to get CActiveDataProvider instance which will filter * models according to data in model fields. * - Pass data provider to CGridView, CListView or any similar widget. * * @return CActiveDataProvider the data provider that can return the models * based on the search/filter conditions. */ public function search() { // @todo Please modify the following code to remove attributes that should not be searched.
$criteria=new CDbCriteria;
$criteria->compare('id_comment',$this->id_comment); $criteria->compare('content',$this->content,true); $criteria->compare('post_id',$this->post_id); $criteria->compare('create_time',$this->create_time,true); $criteria->compare('create_user_id',$this->create_user_id);
return new CActiveDataProvider($this, array( 'criteria'=>$criteria, )); }
/** * Returns the static model of the specified AR class. * Please note that you should have this exact method in all your CActiveRecord descendants! * @param string $className active record class name. * @return Comment the static model class */ public static function model($className=__CLASS__) { return parent::model($className); }
/** *for create and update time */ public function behaviors() { return array( 'CTimestampBehavior' => array( 'class'=>'zii.behaviors.CTimestampBehavior', 'createAttribute' => 'create_time', ) ); }
}

MMSHFE
شنبه 10 خرداد 1393, 14:48 عصر
خوب ارتباطها که درسته. توی دیتابیس ببینید فیلد create_user_id درست مقداردهی شده؟

>@>mehr
شنبه 10 خرداد 1393, 14:52 عصر
بله فکر میکنم درسته


create table if not exists comment ( id_comment integer not NULL auto_increment, content text not null, post_id int(11) not NULL, create_time DATE default Null, create_user_id int(11) , primary key (id_comment)
)engine=innodb default charset=utf8 collate=utf8_unicode_ci;

alter table comment add foreign key fk_comment_post (post_id) references post (post_id) ;
alter table comment add foreign key fk_comment_author (create_user_id) references user (id_user);

>@>mehr
شنبه 10 خرداد 1393, 14:54 عصر
بعد از اینکه کامنت ثبت شده مقدار نال ثبت شده برای
create_user_id

koorosh4
شنبه 17 خرداد 1393, 11:29 صبح
آقا این yii را چطور باید باهاش کار کرد . نصب کردم . پروژه ی دمو را هم ساختم . اما تغییر دیگه نمیشه داد؟ ایجاد بانک اطلاعاتی و غیره

MMSHFE
شنبه 17 خرداد 1393, 11:52 صبح
چرا نمیشه؟ اینهمه پروژه باهاش داره تو دنیا انجام میشه. مگه ممکنه همه اینها با همون جداول اصلی کار کنن؟ شما مشکلتون رو دقیق بگین تا ببینیم راه حلش چیه.