تالار گفتمان nCIS.ir

نسخه‌ی کامل: مشاهده خطای 400 در حالت pagination (حل شد)
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
سلام
موقع مرور صفحات در pagination خطای 400 ایجاد میشود
مسیر و نام فایل بشرح زیر است
htdocs/blog/protected/views/tags/index.php
 و URL  آن localhost/blog/tags/index?page=2 است
و کد ایجاد شده:
<?php foreach($posts as $post) : ?>
<?php $this->renderPartial('/posts/_view', compact('post')); ?>
<?php endforeach; ?>
<?php if($pageCount > 1) : ?>
<ul class="pagination">
   <?php for($i = 1; $i <= $pageCount; $i++) : ?>
   <li<?php echo ($i == $page ? ' class="active"' : ''); ?>>
       <a href="<?php echo ($i == $page ? '#' : $this->createUrl('index', array('page'=>$i))); ?>"><?php echo $i; ?></a>
   </li>
   <?php endfor; ?>
</ul>
<?php endif; ?>
لطفا جهت رفع خطا راهنمایی فرمائید
با تشکر
کد اکشن رو هم بگذارین.
(07-04-1394، 02:18 ق.ظ)hfaal نوشته: [ -> ]سلام
موقع مرور صفحات در pagination خطای 400 ایجاد میشود
مسیر و نام فایل بشرح زیر است
htdocs/blog/protected/views/tags/index.php
 و URL  آن localhost/blog/tags/index?page=2 است
و کد ایجاد شده:
<?php foreach($posts as $post) : ?>
<?php $this->renderPartial('/posts/_view', compact('post')); ?>
<?php endforeach; ?>
<?php if($pageCount > 1) : ?>
<ul class="pagination">
   <?php for($i = 1; $i <= $pageCount; $i++) : ?>
   <li<?php echo ($i == $page ? ' class="active"' : ''); ?>>
       <a href="<?php echo ($i == $page ? '#' : $this->createUrl('index', array('page'=>$i))); ?>"><?php echo $i; ?></a>
   </li>
   <?php endfor; ?>
</ul>
<?php endif; ?>
لطفا جهت رفع خطا راهنمایی فرمائید
با تشکر
این کد را در فایل TagsController.php قرار داده ام
    public function actionIndex($id, $page = 1)
   {
       if(!($tag = Tags::model()->findByPk($id))) {
           throw new CHttpException(404, 'برچسب موردنظر یافت نشد.');
       }
       $criteria = new CDbCriteria;
       $criteria->with = 'tags';
       $criteria->together = true; // force to join
       $criteria->addColumnCondition(array('tags.id' => $id, 'tags.confirmed' => 1, 't.confirmed' => 1));
       $totalPosts = Posts::model()->count($criteria);
       $itemsPerPage = 2;
       $pageCount = ceil($totalPosts / $itemsPerPage);
       $page = max(1, intval($page));
       $criteria->order = 't.id DESC';
       $criteria->limit = $itemsPerPage;
       $criteria->offset = ($page - 1) * $itemsPerPage;
       $posts = Posts::model()->findAll($criteria);
       if(!$posts) {
           throw new CHttpException(404, 'مطلبی با برچسب "' . CHtml::encode($tag->name) . '" یافت نشد.');
       }
       $this->render('index', compact('posts', 'pageCount', 'page'));
   }
و کل فایل TagsController.php
<?php
class TagsController extends Controller
{
   public function filters()
   {
       return array(
           'accessControl',
       );
   }
   
   public function accessRules()
   {
       return array(
           array(
               'allow',
               'actions'=>array('create', 'delete', 'edit', 'index', 'list'),
               'users'=>array('@'),
           ),
           array(
               'deny',
               'users'=>array('*'),
           ),
       );
   }
   public function actionList()
   {
       if(!($tags = Tags::model()->findAll(array('condition'=>'user_id=:userId and confirmed=1 order by id desc','params'=>array(':userId'=>Yii::app()->user->id))))){
           throw new CHttpException(404, 'هیچ برچسبی موجود نیست.');
       }
       $this->render('list', compact('tags'));
   }
   
   public function actionIndex($id, $page = 1)
   {
       if(!($tag = Tags::model()->findByPk($id))) {
           throw new CHttpException(404, 'برچسب موردنظر یافت نشد.');
       }
       $criteria = new CDbCriteria;
       $criteria->with = 'tags';
       $criteria->together = true; // force to join
       $criteria->addColumnCondition(array('tags.id' => $id, 'tags.confirmed' => 1, 't.confirmed' => 1));
       $totalPosts = Posts::model()->count($criteria);
       $itemsPerPage = 2;
       $pageCount = ceil($totalPosts / $itemsPerPage);
       $page = max(1, intval($page));
       $criteria->order = 't.id DESC';
       $criteria->limit = $itemsPerPage;
       $criteria->offset = ($page - 1) * $itemsPerPage;
       $posts = Posts::model()->findAll($criteria);
       if(!$posts) {
           throw new CHttpException(404, 'مطلبی با برچسب "' . CHtml::encode($tag->name) . '" یافت نشد.');
       }
       $this->render('index', compact('posts', 'pageCount', 'page'));
   }
   
   public function actionDelete($id)
   {
       if(!($tag = Tags::model()->findByPk($id))) {
           throw new CHttpException(404, 'برچسب موردنظر یافت نشد.');
       }
       $tag->delete();
       $this->redirect(array('index'));
   }
   public function actionCreate()
   { 
//        $model = new tags;
//        $this->render('create', compact('model'));

       $model = new Tags;
       $model->name = '';
       $model->user_id = Yii::app()->user->id;
       $model->confirmed = 1;
       if(isset($_POST['ajax']) && $_POST['ajax'] === 'link-form') {
           echo CActiveForm::validate($model);
           Yii::app()->end();
       }
       if(isset($_POST['Tags'])) {
           $model->attributes = $_POST['Tags'];
           if($model->save()) {
               $this->redirect(array('index'));
           }
       }
       $this->render('create', compact('model'));

   }
   public function actionEdit($id)
   {
//        $model = new tags;
//        $this->render('edit', compact('model'));

       if(!($model = Tags::model()->findByPk($id))) {
           throw new CHttpException(404, 'برچسب موردنظر یافت نشد.');
       }
       if(isset($_POST['Tags'])) {
           $model->attributes = $_POST['Tags'];
           if($model->save()) {
               $this->redirect(array('index'));
           }
       }
       $this->render('edit', compact('model'));
       
   }
}
من در بررسی که در این مورد داشتم در اینترنت در مورد نتظیمات فایل main در فولدر config مطالبی بود برای تنظیم حالت $_get ولی من نتوانستم تنظیمات صحیح را انجام دهم
پیغامی که همراه خطای 404 ظاهر میشه چیه؟ الان متد actionIndex شما یه پارامتر id$ هم داره که اختیاری نیست. پس باید URL شما شبیه این باشه تا کار کنه:
localhost/blog/tags/index?id=5&page=2
localhost/blox/tags/index?id=5

یعنی page اختیاریه ولی id اجباری.
خطای 400 و پیغام (درخواست شما معتبر نیست) نمایش داده میشود
میتونید توی پیام خصوصی تیم ویور بدین؟
مشکل توی تیم ویور رفع شد. علتش همون ارسال نشدن id برای اکشن index بود.
ضمن تشکر از استاد محترم جهت ثبت تغییرات انجام شده و استفاده دوستان از این موضوع اصلاحات را قرار میدهم
در کنترلر این خط اصلاح شد
        $this->render('view', compact('tagsName', 'id', 'posts', 'pageCount', 'page'));

 
و در ویو این خط اصلاح شد

        <a href="<?php echo ($i == $page ? '#' : $this->createUrl('view', array('id' => $id, 'page'=>$i))); ?>"><?php echo $i; ?></a>