/** * Lists all NodeLink models. * @return mixed */ public function actionIndex() { $searchModel = new NodeLinkSearch(); $dataProvider = $searchModel->search(Yii::$app->request->queryParams); $gridColumns[] = ['class' => 'kartik\\grid\\SerialColumn', 'contentOptions' => ['class' => 'kartik-sheet-style'], 'width' => '36px', 'header' => '序号', 'headerOptions' => ['class' => 'kartik-sheet-style']]; $gridColumns[] = ['attribute' => 'id', 'vAlign' => 'middle']; $gridColumns[] = ['attribute' => 'node_id', 'vAlign' => 'middle', 'width' => '180px', 'value' => function ($searchModel, $key, $index, $widget) { return empty($searchModel->node->name) ? null : $searchModel->node->name; }, 'filterType' => GridView::FILTER_SELECT2, 'filter' => ArrayHelper::map(Node::find()->orderBy('name')->asArray()->all(), 'id', 'name'), 'filterWidgetOptions' => ['pluginOptions' => ['allowClear' => true]], 'filterInputOptions' => ['placeholder' => 'node'], 'format' => 'raw']; $gridColumns[] = 'content'; $gridColumns[] = ['class' => 'kartik\\grid\\BooleanColumn', 'attribute' => 'status', 'width' => '100px', 'vAlign' => 'middle', 'trueLabel' => '启用', 'falseLabel' => '禁用']; $gridColumns[] = ['class' => '\\kartik\\grid\\ActionColumn', 'template' => '{view} {update} {delete}']; return $this->render('index', ['searchModel' => $searchModel, 'dataProvider' => $dataProvider, 'gridColumns' => $gridColumns]); }
/** * Creates data provider instance with search query applied * * @param array $params * * @return ActiveDataProvider */ public function search($params) { $query = Node::find(); $dataProvider = new ActiveDataProvider(['query' => $query, 'sort' => ['defaultOrder' => ['id' => SORT_DESC]]]); $this->load($params); if (!$this->validate()) { // uncomment the following line if you do not want to return any records when validation fails // $query->where('0=1'); return $dataProvider; } $query->andFilterWhere(['id' => $this->id, 'tab_id' => $this->tab_id, 'parent_id' => $this->parent_id, 'is_hidden' => $this->is_hidden, 'need_login' => $this->need_login, 'sort' => $this->sort, 'created' => $this->created]); $query->andFilterWhere(['like', 'name', $this->name])->andFilterWhere(['like', 'enname', $this->enname])->andFilterWhere(['like', 'desc', $this->desc])->andFilterWhere(['like', 'logo', $this->logo]); return $dataProvider; }
/** * Lists all Topic models. * @return mixed */ public function actionIndex() { $searchModel = new TopicSearch(); $dataProvider = $searchModel->search(Yii::$app->request->queryParams); $gridColumns[] = ['class' => 'kartik\\grid\\SerialColumn', 'contentOptions' => ['class' => 'kartik-sheet-style'], 'width' => '36px', 'header' => '序号', 'headerOptions' => ['class' => 'kartik-sheet-style']]; $gridColumns[] = ['attribute' => 'user_id', 'vAlign' => 'middle', 'width' => '180px', 'value' => function ($searchModel, $key, $index, $widget) { return $searchModel->user->username; }, 'filterType' => GridView::FILTER_SELECT2, 'filter' => ArrayHelper::map(User::find()->orderBy('username')->asArray()->all(), 'id', 'username'), 'filterWidgetOptions' => ['pluginOptions' => ['allowClear' => true]], 'filterInputOptions' => ['placeholder' => '用户'], 'format' => 'raw']; $gridColumns[] = ['attribute' => 'node_id', 'vAlign' => 'middle', 'width' => '180px', 'value' => function ($searchModel, $key, $index, $widget) { return $searchModel->node->name; }, 'filterType' => GridView::FILTER_SELECT2, 'filter' => ArrayHelper::map(Node::find()->orderBy('name')->asArray()->all(), 'id', 'name'), 'filterWidgetOptions' => ['pluginOptions' => ['allowClear' => true]], 'filterInputOptions' => ['placeholder' => '节点'], 'format' => 'raw']; $gridColumns[] = ['class' => 'kartik\\grid\\BooleanColumn', 'attribute' => 'need_login', 'vAlign' => 'middle', 'trueLabel' => '是', 'falseLabel' => '否']; $gridColumns[] = 'title'; $gridColumns[] = 'click'; $gridColumns[] = 'follow'; $gridColumns[] = 'reply'; $gridColumns[] = ['mergeHeader' => true, 'attribute' => 'created', 'format' => 'datetime']; $gridColumns[] = ['class' => '\\kartik\\grid\\ActionColumn', 'template' => '{view} {update} {delete}', 'buttons' => ['view' => function ($url, $model) { return Html::a('<span class="glyphicon glyphicon-eye-open"></span>', Yii::$app->params['domain'] . $url, ['title' => '查看', 'target' => '_blank']); }]]; return $this->render('index', ['searchModel' => $searchModel, 'dataProvider' => $dataProvider, 'gridColumns' => $gridColumns]); }
/** * Lists all Node models. * @return mixed */ public function actionIndex() { $searchModel = new NodeSearch(); $dataProvider = $searchModel->search(Yii::$app->request->queryParams); $gridColumns[] = ['class' => 'kartik\\grid\\SerialColumn', 'contentOptions' => ['class' => 'kartik-sheet-style'], 'width' => '36px', 'header' => '序号', 'headerOptions' => ['class' => 'kartik-sheet-style']]; $gridColumns[] = ['mergeHeader' => true, 'attribute' => 'logo24Show', 'header' => '图片', 'format' => 'html']; $gridColumns[] = ['attribute' => 'id', 'vAlign' => 'middle']; $gridColumns[] = ['attribute' => 'name', 'vAlign' => 'middle']; $gridColumns[] = ['attribute' => 'tab_id', 'vAlign' => 'middle', 'width' => '180px', 'value' => function ($searchModel, $key, $index, $widget) { return empty($searchModel->tab->name) ? null : $searchModel->tab->name; }, 'filterType' => GridView::FILTER_SELECT2, 'filter' => ArrayHelper::map(Tab::find()->orderBy('name')->asArray()->all(), 'id', 'name'), 'filterWidgetOptions' => ['pluginOptions' => ['allowClear' => true]], 'filterInputOptions' => ['placeholder' => 'tab'], 'format' => 'raw']; $gridColumns[] = ['attribute' => 'enname', 'vAlign' => 'middle']; $gridColumns[] = ['attribute' => 'parent_id', 'vAlign' => 'middle', 'width' => '180px', 'value' => function ($searchModel, $key, $index, $widget) { return empty($searchModel->parent->name) ? null : $searchModel->parent->name; }, 'filterType' => GridView::FILTER_SELECT2, 'filter' => ArrayHelper::map(Node::find()->orderBy('name')->asArray()->all(), 'id', 'name'), 'filterWidgetOptions' => ['pluginOptions' => ['allowClear' => true]], 'filterInputOptions' => ['placeholder' => '父节点'], 'format' => 'raw']; $gridColumns[] = ['attribute' => 'desc', 'vAlign' => 'middle']; $gridColumns[] = ['class' => 'kartik\\grid\\BooleanColumn', 'attribute' => 'is_hidden', 'width' => '100px', 'vAlign' => 'middle', 'trueLabel' => '是', 'falseLabel' => '否']; $gridColumns[] = ['class' => 'kartik\\grid\\BooleanColumn', 'attribute' => 'need_login', 'width' => '100px', 'vAlign' => 'middle', 'trueLabel' => '是', 'falseLabel' => '否']; $gridColumns[] = ['attribute' => 'sort', 'vAlign' => 'middle']; $gridColumns[] = ['mergeHeader' => true, 'attribute' => 'created', 'format' => 'datetime']; $gridColumns[] = ['class' => '\\kartik\\grid\\ActionColumn']; return $this->render('index', ['searchModel' => $searchModel, 'dataProvider' => $dataProvider, 'gridColumns' => $gridColumns]); }
public function actionView($nodeName) { $node = $this->findModel($nodeName); if ($node->need_login == 1 && Yii::$app->user->isGuest) { Yii::$app->getSession()->setFlash('danger', '你访问的节点需要登陆之后才能查看'); return $this->redirect('/account/login?next=/node/' . $nodeName); } if (!empty($node->bg) && $node->use_bg == 1) { $this->bg = $node->bg; } if (!empty($node->bg_color)) { $this->bg_color = $node->bg_color; } $this->title = $node->name . ' - ' . Yii::$app->name; $this->description = ''; $SubNode[$node->id] = $node->id; $SubSubNode = ArrayHelper::map(Node::find()->where(['parent_id' => $node->id])->andWhere(['is_hidden' => 0])->all(), 'id', 'id'); $SubNode = array_merge($SubNode, $SubSubNode); array_unique($SubNode); $query = Topic::find()->where(['in', 'node_id', $SubNode]); $pagination = new Pagination(['defaultPageSize' => Yii::$app->params['pageSize'], 'totalCount' => $query->count()]); $model = $query->orderBy(['id' => SORT_DESC])->offset($pagination->offset)->limit($pagination->limit)->all(); return $this->render('view', ['model' => $model, 'node' => $node, 'pagination' => $pagination]); }
/** * 获取tab的节点id,有缓存就获取缓存,用来取tab下面的节点建议 * @return array|\yii\db\ActiveRecord[] */ static function SubNodeId($enname) { if (!($SubNodeId = Yii::$app->cache->get('subnodeid' . $enname))) { $tab = Tab::findOne(['enname' => $enname]); if (empty($tab->id)) { return []; } $SubNodeId = ArrayHelper::map(Node::find()->where(['tab_id' => $tab->id])->andWhere(['is_hidden' => 0])->all(), 'id', 'id'); Yii::$app->cache->set('subnodeid' . $enname, $SubNodeId, 0); } return $SubNodeId; }
static function Info($id) { if (!($nodeInfo = Yii::$app->cache->get('node' . $id))) { $nodeInfo = Node::find()->where(['id' => $id])->asArray()->one(); Yii::$app->cache->set('node' . $id, $nodeInfo, 0); } return $nodeInfo; }
/** * 获取相关节点 * @param $node_id * @param $parent_id * @param bool $onlyId * @return array|\yii\db\ActiveRecord[] */ static function RelatedNode($node_id, $parent_id, $onlyId = true) { if ($onlyId) { if (!($NodeRelatedNode = Yii::$app->cache->get('NodeRelatedNodeId' . $node_id))) { $NodeRelatedNode = ArrayHelper::map(Node::find()->select('id')->where(['parent_id' => $parent_id])->andWhere('id != ' . $node_id)->asArray('id')->all(), 'id', 'id'); Yii::$app->cache->set('NodeRelatedNodeId' . $node_id, $NodeRelatedNode, 0); } } else { if (!($NodeRelatedNode = Yii::$app->cache->get('NodeRelatedNode' . $node_id))) { $NodeRelatedNode = (new Query())->from(Node::tableName())->select('enname, name, logo')->where(['parent_id' => $parent_id])->andWhere('id != ' . $node_id)->all(); Yii::$app->cache->set('NodeRelatedNode' . $node_id, $NodeRelatedNode, 0); } } return $NodeRelatedNode; }
use yii\helpers\Html; use yii\widgets\ActiveForm; /* @var $this yii\web\View */ /* @var $model common\models\Topic */ /* @var $form yii\widgets\ActiveForm */ ?> <div class="topic-form"> <?php $form = ActiveForm::begin(); ?> <?php echo $form->field($model, 'node_id')->widget(\kartik\select2\Select2::classname(), ['data' => \yii\helpers\ArrayHelper::map(\common\models\Node::find()->all(), 'id', 'name'), 'options' => ['placeholder' => '节点'], 'pluginOptions' => ['allowClear' => true]]); ?> <?php echo $form->field($model, 'need_login')->dropDownList(['1' => '是', '0' => '否']); ?> <div class="form-group"> <?php echo Html::submitButton($model->isNewRecord ? Yii::t('app', 'Create') : Yii::t('app', 'Update'), ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']); ?> </div> <?php ActiveForm::end(); ?>