Основной режим Yii2 не вызывает main.php - PullRequest
0 голосов
/ 16 октября 2018

Я использую базовый режим на платформе Yii2.Я создаю два контроллера - SiteController и CategoryController.У меня есть две папки с небольшим количеством просмотров - сайт (индекс и о) и категории (категория и поиск).Когда я отрисовываю представление с помощью SiteController, все в порядке, но когда я отрисовываю представление с помощью CategoryController actionSearch - не вызывайте main.php и не отображайте html в представлении, но если я вызываю die - результаты есть.Вот код: модель:

namespace app\models;

use yii\db\ActiveRecord;

class Categories extends ActiveRecord
{
    public static function tableName()
    {
        return 'categories';
    }
    public function getProducts(){
        return $this->hasMany(Products::className(), ['category_id' => 'id']);
    }
}

и CategoryController:

public function actionSrch() {
    $cat = Categories::findOne(1);
    $q = Yii::$app->request->get('q');
    if(isset($q) and $q!=''){
        $query = Products::find()->where(['like', 'title', $q]);
        // pagination
        $pages = new Pagination([
            'totalCount'     => $query->count(),
            'pageSize'       => 4,
            'forcePageParam' => false,
            'pageSizeParam'  => false ]);

        $products = $query->offset($pages->offset)->limit($pages->limit)->all();
    }else{
        $products = Products::find()->where('title<>:title', [':title'=>''])->all();
    }
    $this->render('search', compact('products','pages', 'q', 'cat'));

}

и форма поиска:

 <div class="col-sm-3">
     <div class="search_box pull-right">
         <form action="<?= \yii\helpers\Url::to(['categories/search']) ?>" method="get">
            <input type="text" placeholder="Search" name="aaa">
         </form>
     </div>
 </div>

и представление в search.php

use yii\helpers\Html;
use yii\helpers\Url;
use yii\widgets\LinkPager;
<ul class="catalog category-products">
    <?= \app\components\MenuWidget::Widget(['tpl' => 'menu']) ?>
</ul>
<div class="col-sm-9 padding-right">
     <div class="features_items"><!--features_items-->
          <?php if(!empty($products)): ?>
           <?php $i = 0; foreach($products as $prd): ?>
          <h2><?= $prd->price ?></h2>
           <?php endif; ?>
           <?php endforeach; ?>
           <?php else :?>
               <div class="alert alert-danger">Do not have products!!!</div>
             <?php endif; ?>

1 Ответ

0 голосов
/ 16 октября 2018

Сначала проверьте ваше имя действия actionSrch или actionSearch.

И добавьте return перед рендерингом файла, как показано ниже.

public function actionSrch() {
    $cat = Categories::findOne(1);
    $q = Yii::$app->request->get('q');
    if(isset($q) and $q!=''){
        $query = Products::find()->where(['like', 'title', $q]);
        // pagination
        $pages = new Pagination([
           'totalCount'     => $query->count(),
           'pageSize'       => 4,
           'forcePageParam' => false,
           'pageSizeParam'  => false 
        ]);

        $products = $query->offset($pages->offset)->limit($pages->limit)->all();
    }else{
        $products = Products::find()->where('title<>:title', [':title'=>''])->all();
    }
    return $this->render('search', compact('products','pages', 'q', 'cat'));
}

Ссылка Базовые действия Yii2 и Yii2 Render ()

...