رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
مشاهده خطای 400 در حالت pagination (حل شد)
#1
سلام
موقع مرور صفحات در 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; ?>
لطفا جهت رفع خطا راهنمایی فرمائید
با تشکر
پاسخ
تشکر شده توسط:
#2
کد اکشن رو هم بگذارین.
پاسخ
تشکر شده توسط:
#3
(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 ولی من نتوانستم تنظیمات صحیح را انجام دهم
پاسخ
تشکر شده توسط:
#4
پیغامی که همراه خطای 404 ظاهر میشه چیه؟ الان متد actionIndex شما یه پارامتر id$ هم داره که اختیاری نیست. پس باید URL شما شبیه این باشه تا کار کنه:
localhost/blog/tags/index?id=5&page=2
localhost/blox/tags/index?id=5

یعنی page اختیاریه ولی id اجباری.
پاسخ
تشکر شده توسط:
#5
خطای 400 و پیغام (درخواست شما معتبر نیست) نمایش داده میشود
پاسخ
تشکر شده توسط:
#6
میتونید توی پیام خصوصی تیم ویور بدین؟
پاسخ
تشکر شده توسط:
#7
مشکل توی تیم ویور رفع شد. علتش همون ارسال نشدن id برای اکشن index بود.
پاسخ
تشکر شده توسط: hfaal
#8
ضمن تشکر از استاد محترم جهت ثبت تغییرات انجام شده و استفاده دوستان از این موضوع اصلاحات را قرار میدهم
در کنترلر این خط اصلاح شد
        $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>

پاسخ
تشکر شده توسط:




کاربران در حال بازدید این موضوع: 1 مهمان